def create_delegate(self, wlt, owners, district, total_votes): args_delegate = { "1": owners, "2": district, "3": transbytes(total_votes, 32) } tx_header = TransactionHeader(wlt.address(0), None, GoJson.dumps(args_delegate).encode()) tx_header.sign(wlt) return self.create_contract("delegate", tx_header)
def create_option(self, wlt, owner, price, value): value = transbytes(price, 32) args_option = { "owner": base64.b64encode(owner).decode(), "strike_price": base64.b64encode(value).decode() } tx_header = TransactionHeader(wlt.address(0), None, json.dumps(args_option).encode(), value) tx_header.sign(wlt) return self.create_contract("option", tx_header)
def transfer(self, wlt, to_addr, value: int or bytes or str): value = transbytes(value, 32) to_addr = transbytes(to_addr, 32) # TODO: bug: len(value) == 32 if len(value) > 32: raise ValueError("value(uint256) overflow") data_set_balance = { "function_name": "transfer", "args": base64.b64encode( json.dumps({ "1": base64.b64encode(value).decode(), }).encode(ENC)).decode() } return self.exec_system_contract_method( wlt, b"systemCall\x19system.token\x18", json.dumps(data_set_balance).encode(ENC), 0, to_addr)
def buy_option(self, wlt, price, contract_address=None): price = transbytes(price, 32) data = { "function_name": "BuyOption", "args": base64.b64encode( json.dumps({ "1": base64.b64encode(transbytes(price, 32)).decode() }).encode()).decode() } # This is printed when contract is deployed. if contract_address is None: contract_address = self.address else: if isinstance(contract_address, str): if contract_address[0:2] == "0x": contract_address = contract_address[2:] contract_address = bytes.fromhex(contract_address) tx_header = TransactionHeader(wlt.address(0), contract_address, json.dumps(data).encode()) tx_header.sign(wlt) return self.exec_contract_method("option", tx_header)
def value(self, val): if val is None: self._value = b"\x00" return if isinstance(val, bytes): if len(val) > 64: raise ValueError("value is not a valid uint256 number") self._value = val return val = transint(val) if val < 0 or val >= MOD256: raise ValueError("value is not a valid uint256 number") self._value = transbytes(val, 32)