Esempio n. 1
0
 def parse_args(self):
     args = json.loads('[{}]'.format(self.args_e.text()))
     abi_index = self.abi_signatures[self.abi_combo.currentIndex()][0]
     if abi_index == -1:
         return None, []
     abi = self.contract['interface'][abi_index]
     inputs = abi.get('inputs', [])
     if not len(args) == len(inputs):
         raise BaseException('invalid input count,expect {} got {}'.format(
             len(inputs), len(args)))
     for index, _input in enumerate(inputs):
         _type = _input.get('type', '')
         if _type == 'address':
             addr = args[index]
             if is_address(addr):
                 __, hash160 = b58_address_to_hash160(addr)
                 addr = bh2u(hash160)
             if not is_hash160(addr):
                 raise BaseException('invalid input:{}'.format(args[index]))
             args[index] = addr.lower()
         elif 'int' in _type:
             if not isinstance(args[index], int):
                 raise BaseException('inavlid input:{}'.format(args[index]))
     if len(self.senders) > 0:
         sender = self.senders[self.sender_combo.currentIndex()]
     else:
         sender = None
     return abi, args, sender
Esempio n. 2
0
 def parse_args(self):
     sender = None
     if len(self.senders) > 0:
         sender = self.senders[self.sender_combo.currentIndex()]
     if not sender:
         raise BaseException('no sender selected')
     args = json.loads('[{}]'.format(self.args_e.text()))
     abi = self.constructor
     inputs = abi.get('inputs', [])
     if not len(args) == len(inputs):
         raise BaseException('invalid input count,expect {} got {}'.format(
             len(inputs), len(args)))
     for index, _input in enumerate(inputs):
         _type = _input.get('type', '')
         if _type == 'address':
             addr = args[index]
             if is_address(addr):
                 __, hash160 = b58_address_to_hash160(addr)
                 addr = bh2u(hash160)
             if not is_hash160(addr):
                 raise BaseException('invalid input:{}'.format(args[index]))
             args[index] = addr.lower()
         elif 'int' in _type:
             if not isinstance(args[index], int):
                 raise BaseException('inavlid input:{}'.format(args[index]))
         elif _type == 'string' or _type == 'bytes':
             args[index] = args[index].encode()
     return abi, args, sender
Esempio n. 3
0
 def show_address_helper(self, wallet, address, keystore=None):
     if keystore is None:
         keystore = wallet.get_keystore()
     if not is_address(address):
         keystore.handler.show_error(_('Invalid Qtum Address'))
         return False
     if not wallet.is_mine(address):
         keystore.handler.show_error(_('Address not in wallet.'))
         return False
     if type(keystore) != self.keystore_class:
         return False
     return True