def register_candidate(self, account: Account, peer_pubkey: str, init_pos: int, identity: Identity, password: str, key_no: int, payer: Account, gas_limit: int, gas_price: int): contract_address = bytearray.fromhex(self.CONTRACT_ADDRESS) param = { "peer_pubkey": peer_pubkey, "address": account.get_address().to_array(), "init_pos": init_pos, "ontid": identity.ont_id.encode(), "key_no": key_no } invoke_code = build_native_invoke_code(contract_address, bytes([0]), "registerCandidate", param) unix_time_now = int(time()) tx = Transaction(0, 0xd1, unix_time_now, gas_price, gas_limit, payer.get_address().to_array(), invoke_code, bytearray(), [], bytearray()) self.__sdk.sign_transaction(tx, account) ontid_acc = self.__sdk.wallet_manager.get_account( identity.ont_id, password) self.__sdk.add_sign_transaction(tx, ontid_acc) if account.get_address_base58() is not payer: self.__sdk.add_sign_transaction(tx, payer) res = self.__sdk.rpc.send_raw_transaction(tx) return tx.hash256_explorer()
def withdraw(self, account: Account, peer_publickeys: list, withdraw_list: list, payer: Account, gas_limit: int, gas_price: int): contract_address = bytearray.fromhex(self.CONTRACT_ADDRESS) if len(peer_publickeys) != len(withdraw_list): raise Exception( "the length of peer_publickeys should equal the length of pos_lists" ) param = { "address": account.get_address().to_array(), "publickeys_length": len(peer_publickeys) } for i in range(len(peer_publickeys)): param["publickey" + str(i)] = peer_publickeys[i] param["pos_lists_length"] = len(withdraw_list) for i in range(len(withdraw_list)): param["pos_lists" + str(i)] = withdraw_list[i] invoke_code = build_native_invoke_code(contract_address, bytes([0]), "withdraw", param) unix_time_now = int(time()) tx = Transaction(0, 0xd1, unix_time_now, gas_price, gas_limit, payer.get_address().to_array(), invoke_code, bytearray(), [], bytearray()) self.__sdk.sign_transaction(tx, account) if payer is not None and account.get_address_base58( ) is not payer.get_address_base58(): self.__sdk.add_sign_transaction(tx, payer) self.__sdk.rpc.send_raw_transaction(tx) return tx.hash256_explorer()
def withdraw_fee(self, account: Account, payer: Account, gas_limit: int, gas_price: int): contract_address = bytearray.fromhex(self.CONTRACT_ADDRESS) param = {"address": account.get_address().to_array()} invoke_code = build_native_invoke_code(contract_address, bytes([0]), "withdrawFee", param) unix_time_now = int(time()) tx = Transaction(0, 0xd1, unix_time_now, gas_price, gas_limit, payer.get_address().to_array(), invoke_code, bytearray(), [], bytearray()) self.__sdk.sign_transaction(tx, account) if payer is not None and account.get_address_base58() is not payer.get_address_base58(): self.__sdk.add_sign_transaction(tx, payer) self.__sdk.rpc.send_raw_transaction(tx) return tx.hash256_explorer()
def change_max_authorization(self, account: Account, peer_publickey: str, max_authorize: int, payer: Account, gas_limit: int, gas_price: int): contract_address = bytearray.fromhex(self.CONTRACT_ADDRESS) param = {"peer_publickey": peer_publickey, "address": account.get_address().to_array(), "maxAuthorize": max_authorize} invoke_code = build_native_invoke_code(contract_address, bytes([0]), "changeMaxAuthorization", param) unix_time_now = int(time()) tx = Transaction(0, 0xd1, unix_time_now, gas_price, gas_limit, payer.get_address().to_array(), invoke_code, bytearray(), [], bytearray()) self.__sdk.sign_transaction(tx, account) if payer is not None and account.get_address_base58() is not payer.get_address_base58(): self.__sdk.add_sign_transaction(tx, payer) self.__sdk.rpc.send_raw_transaction(tx) return tx.hash256_explorer()