예제 #1
0
    def test_valid_address_to_hex(self):
        address = 'qHmBaB5dWsxWtMh3MNh6B427L47DWavgJD'
        hex_address = '023b5269b46be13e6ac5c3f122ed263e9fa78114'

        self.assertEqual(Qtum.address_to_hex(address), hex_address)
        self.assertEqual(Qtum.hex_to_qtum_address(hex_address, mainnet=False),
                         address)
예제 #2
0
 def balance_put(self, data):
     txid = data[0]
     address = data[1]
     address = Qtum.hex_to_qtum_address(address, mainnet=False)
     ammount = data[2]
     check = self.balance.get_balance(address, "PUT")
     if type(check) == list:
         update_data_1 = self.balance.inc_balance(address, ammount, "PUT")
예제 #3
0
 def balance_put(self, data):
     txid = data[0]
     address = data[1]
     address = Qtum.hex_to_qtum_address(address, mainnet=mainnet_status)
     amount = data[2]
     gasLimit = data[4]
     gasPrice = data[5]
     result = self.db.check_address(address, self.coinid_put)
     if result:
         update_data_1 = self.balance.inc_balance(address, amount,
                                                  self.coinid_put)
         self.client.log_transaction(
             **{
                 "coinid": self.coinid_put,
                 "blocknumber": self.from_block,
                 "blockhash": self.block_hash_num(),
                 "vin": [],
                 "vout": [{
                     address: amount
                 }],
                 "txid": txid,
                 "gasLimit": gasLimit,
                 "gasPrice": gasPrice
             })
예제 #4
0
 def transaction_out(self, vout, txid):
     # parsing output
     try:
         list_address = [False]
         for vout_i in vout:
             try:
                 script_pub_key = vout_i["scriptPubKey"]
                 types = script_pub_key["type"]
                 if types == "call" and self.coinid == coin_id:
                     asm = script_pub_key["asm"]
                     asm_split = asm.split()
                     gasLimit = asm_split[1]
                     gasPrice = asm_split[2]
                     asm_data = asm_split[3]
                     hex_address = asm_data[:8]
                     smart_contr_address = asm_split[4]
                     if smart_contr_address in address_smart_contract and hex_address == sign_transfer:
                         data = asm_data[8:]
                         signatures_list_type = ['address', 'uint']
                         try:
                             decode = self.abi_to_params(
                                 data, signatures_list_type)
                             new_decode = self.change_decode(
                                 signatures_list_type, decode)
                             address_token = new_decode[0]
                             value_int = new_decode[1]
                             address_token = Qtum.hex_to_qtum_address(
                                 address_token, mainnet=mainnet_status)
                             result = self.db.check_address(
                                 address=address_token, coinid=coin_id_put)
                             result_keys = result.keys()
                             if "address" in result_keys:
                                 update_data_1 = self.client.inc_balance(
                                     address_token, value_int, coin_id_put)
                                 self.storge.log_transaction(
                                     **{
                                         "coinid": coin_id_put,
                                         "blocknumber": self.from_block,
                                         "blockhash": self.block_hash_num(),
                                         "vin": [],
                                         "vout": [{
                                             address_token: value_int
                                         }],
                                         "txid": txid,
                                         "gasLimit": gasLimit,
                                         "gasPrice": gasPrice
                                     })
                         except Exception as e:
                             # print(e)
                             pass
                 addresses = script_pub_key["addresses"]
                 value = vout_i["value"]
                 value_int = int(value * (10**8))
                 for adr in addresses:
                     data = self.db.check_address(adr, self.coinid)
                     result_keys = data.keys()
                     if "address" in result_keys:
                         update_data_1 = self.client.inc_balance(
                             adr, value_int, coin_id)
                         list_address[0] = True
                     list_address += [{adr: value_int}]
             except:
                 pass
         return list_address
     except:
         pass