コード例 #1
0
ファイル: contract.py プロジェクト: KenHopkin/UIP
    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)
コード例 #2
0
 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)
コード例 #3
0
ファイル: contract.py プロジェクト: KenHopkin/py-nsbcli
    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)
コード例 #4
0
 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)
コード例 #5
0
    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)