def test_native_vm_transaction(self):
     amount = 1
     asset = sdk.native_vm.asset()
     tx = asset.new_transfer_transaction('ont', acct2.get_address_base58(),
                                         acct1.get_address_base58(), amount,
                                         acct1.get_address_base58(), 20000,
                                         500)
     tx.sign_transaction(acct1)
     tx.add_sign_transaction(acct2)
     try:
         tx_hash = sdk.rpc.send_raw_transaction(tx)
         self.assertEqual(64, len(tx_hash))
     except SDKException as e:
         self.assertIn('[Transfer] balance insufficient', e.args[1])
     tx = asset.new_transfer_transaction('ont', acct1.get_address_base58(),
                                         acct2.get_address_base58(), amount,
                                         acct1.get_address_base58(), 20000,
                                         500)
     tx.sign_transaction(acct2)
     tx.add_sign_transaction(acct1)
     try:
         tx_hash = sdk.rpc.send_raw_transaction(tx)
         self.assertEqual(64, len(tx_hash))
     except SDKException as e:
         self.assertIn('[Transfer] balance insufficient', e.args[1])
Exemplo n.º 2
0
    def test_get_balance(self):
        acct_balance = sdk.rpc.get_balance(acct1.get_address_base58())
        try:
            acct_balance['ont']
        except KeyError:
            raised = True
            self.assertFalse(raised, 'Exception raised')
        try:
            acct_balance['ong']
        except KeyError:
            raised = True
            self.assertFalse(raised, 'Exception raised')

        acct_balance_2 = sdk.rpc.get_balance(acct1.get_address_base58())
        try:
            acct_balance_2['ont']
        except KeyError:
            raised = True
            self.assertFalse(raised, 'Exception raised')
        try:
            acct_balance_2['ong']
        except KeyError:
            raised = True
            self.assertFalse(raised, 'Exception raised')

        acct_balance_3 = sdk.rpc.get_balance(acct1.get_address_base58())
        try:
            acct_balance_3['ont']
        except KeyError:
            raised = True
            self.assertFalse(raised, 'Exception raised')
        try:
            acct_balance_3['ong']
        except KeyError:
            raised = True
            self.assertFalse(raised, 'Exception raised')

        acct_balance_4 = sdk.rpc.get_balance(acct1.get_address_base58())
        try:
            acct_balance_4['ont']
        except KeyError:
            raised = True
            self.assertFalse(raised, 'Exception raised')
        try:
            acct_balance_4['ong']
        except KeyError:
            raised = True
            self.assertFalse(raised, 'Exception raised')
Exemplo n.º 3
0
 def test_unbound_ong(self):
     b58_address1 = acct1.get_address_base58()
     b58_address2 = acct2.get_address_base58()
     b58_address3 = acct3.get_address_base58()
     b58_address4 = acct4.get_address_base58()
     try:
         acct1_unbound_ong = sdk.native_vm.asset().query_unbound_ong(
             b58_address1)
         self.assertGreaterEqual(acct1_unbound_ong, 0)
     except SDKException as e:
         self.assertIn('ConnectTimeout', e.args[1])
     try:
         acct2_unbound_ong = sdk.native_vm.asset().query_unbound_ong(
             b58_address2)
         self.assertGreaterEqual(acct2_unbound_ong, 0)
     except SDKException as e:
         self.assertIn('ConnectTimeout', e.args[1])
     try:
         acct3_unbound_ong = sdk.native_vm.asset().query_unbound_ong(
             b58_address3)
         self.assertGreaterEqual(acct3_unbound_ong, 0)
     except SDKException as e:
         self.assertIn('ConnectTimeout', e.args[1])
     try:
         acct4_unbound_ong = sdk.native_vm.asset().query_unbound_ong(
             b58_address4)
         self.assertGreaterEqual(acct4_unbound_ong, 0)
     except SDKException as e:
         self.assertIn('ConnectTimeout', e.args[1])
Exemplo n.º 4
0
    def test_new_transfer_transaction(self):
        sdk.rpc.connect_to_test_net()
        b58_from_address = acct1.get_address_base58()
        b58_to_address = acct2.get_address_base58()
        b58_payer_address = b58_to_address
        amount = 1
        gas_price = 500
        gas_limit = 20000
        tx = sdk.native_vm.asset().new_transfer_transaction(
            'ont', b58_from_address, b58_to_address, amount, b58_payer_address,
            gas_limit, gas_price)
        tx.sign_transaction(acct1)
        tx.add_sign_transaction(acct2)
        try:
            tx_hash = sdk.rpc.send_raw_transaction(tx)
            self.assertEqual(64, len(tx_hash))
        except SDKException as e:
            self.assertIn('balance insufficient', e.args[1])
            return

        time.sleep(randint(7, 12))
        event = sdk.rpc.get_smart_contract_event_by_tx_hash(tx_hash)
        ont_contract_address = '0100000000000000000000000000000000000000'
        notify = ContractEventParser.get_notify_list_by_contract_address(
            event, ont_contract_address)
        self.assertEqual('transfer', notify['States'][0])
        self.assertEqual(b58_from_address, notify['States'][1])
        self.assertEqual(b58_to_address, notify['States'][2])
        self.assertEqual(amount, notify['States'][3])
        ong_contract_address = '0200000000000000000000000000000000000000'
        notify = ContractEventParser.get_notify_list_by_contract_address(
            event, ong_contract_address)
        self.assertEqual('transfer', notify['States'][0])
        self.assertEqual(b58_payer_address, notify['States'][1])
        self.assertEqual(gas_price * gas_limit, notify['States'][3])
Exemplo n.º 5
0
 def test_transfer_multi_args(self):
     transfer_1 = [
         acct1.get_address().to_bytes(),
         acct2.get_address().to_bytes(), 10
     ]
     transfer_2 = [
         acct2.get_address().to_bytes(),
         acct3.get_address().to_bytes(), 100
     ]
     hex_contract_address = 'ca91a73433c016fbcbcf98051d385785a6a5d9be'
     func = InvokeFunction('transfer_multi_args')
     func.set_params_value(transfer_1, transfer_2)
     tx_hash = self.send_tx(hex_contract_address, acct1, acct2, func)
     if len(tx_hash) == 0:
         return
     time.sleep(randint(7, 12))
     event = sdk.rpc.get_smart_contract_event_by_tx_hash(tx_hash)
     states = ContractEventParser.get_states_by_contract_address(
         event, hex_contract_address)
     states[0] = ContractDataParser.to_utf8_str(states[0])
     self.assertEqual('transfer_multi_args', states[0])
     states[1][0][0] = ContractDataParser.to_b58_address(states[1][0][0])
     self.assertEqual(acct1.get_address_base58(), states[1][0][0])
     states[1][0][1] = ContractDataParser.to_b58_address(states[1][0][1])
     self.assertEqual(acct2.get_address_base58(), states[1][0][1])
     states[1][0][2] = ContractDataParser.to_int(states[1][0][2])
     self.assertEqual(10, states[1][0][2])
     states[1][1][0] = ContractDataParser.to_b58_address(states[1][1][0])
     self.assertEqual(acct2.get_address_base58(), states[1][1][0])
     states[1][1][1] = ContractDataParser.to_b58_address(states[1][1][1])
     self.assertEqual(acct3.get_address_base58(), states[1][1][1])
     states[1][1][2] = ContractDataParser.to_int(states[1][1][2])
     self.assertEqual(100, states[1][1][2])
    def test_add_multi_sign_transaction(self):
        asset = sdk.native_vm.asset()
        pub_keys = [acct1.get_public_key_bytes(), acct2.get_public_key_bytes(), acct3.get_public_key_bytes()]
        m = 2
        b58_multi_address = Address.b58_address_from_multi_pub_keys(m, pub_keys)
        amount = 1
        gas_price = 500
        gas_limit = 20000
        tx_hash = asset.send_transfer('ont', acct2, b58_multi_address, amount, acct2, gas_limit, gas_price)
        self.assertEqual(64, len(tx_hash))
        tx_hash = asset.send_transfer('ong', acct2, b58_multi_address, amount, acct2, gas_limit, gas_price)
        self.assertEqual(64, len(tx_hash))
        b58_acct1_address = acct1.get_address_base58()
        b58_acct2_address = acct2.get_address_base58()
        self.assertEqual('ATyGGJBnANKFbf2tQMp4muUEZK7KuZ52k4', b58_multi_address)
        tx = sdk.native_vm.asset().new_transfer_transaction('ong', b58_acct1_address, b58_multi_address, amount, b58_acct1_address,
                                            gas_limit, gas_price)
        tx.add_sign_transaction(acct1)

        tx = sdk.native_vm.asset().new_transfer_transaction('ont', b58_multi_address, b58_acct2_address, amount, b58_acct1_address,
                                            gas_limit, gas_price)
        tx.sign_transaction(acct1)
        tx.add_multi_sign_transaction(m, pub_keys, acct1)
        tx.add_multi_sign_transaction(m, pub_keys, acct2)
        tx_hash = sdk.rpc.send_raw_transaction(tx)
        self.assertEqual(64, len(tx_hash))
Exemplo n.º 7
0
 def test_new_transfer_from_transaction(self):
     sdk.rpc.connect_to_test_net()
     sender = acct2
     b58_sender_address = sender.get_address_base58()
     b58_payer_address = sender.get_address_base58()
     b58_from_address = acct1.get_address_base58()
     b58_recv_address = sender.get_address_base58()
     amount = 1
     gas_limit = 20000
     gas_price = 500
     tx = sdk.native_vm.asset().new_transfer_from_transaction('ont', b58_sender_address, b58_from_address,
                                                              b58_recv_address, amount,
                                                              b58_payer_address, gas_limit, gas_price)
     tx.add_sign_transaction(sender)
     try:
         tx_hash = sdk.rpc.send_raw_transaction(tx)
     except SDKException as e:
         msg1 = 'balance insufficient'
         msg2 = 'already in the tx pool'
         self.assertTrue(msg1 in e.args[1] or msg2 in e.args[1])
         return
     self.assertEqual(64, len(tx_hash))
     time.sleep(randint(6, 10))
     event = sdk.rpc.get_smart_contract_event_by_tx_hash(tx_hash)
     self.assertEqual('0100000000000000000000000000000000000000', event['Notify'][0]['ContractAddress'])
     self.assertEqual('0200000000000000000000000000000000000000', event['Notify'][1]['ContractAddress'])
Exemplo n.º 8
0
 def test_notify(self):
     hex_contract_address = '6690b6638251be951dded8c537678200a470c679'
     notify_args = InvokeFunction('testHello')
     bool_msg = True
     int_msg = 1
     bytes_msg = b'Hello'
     str_msg = 'Hello'
     bytes_address_msg = acct1.get_address().to_bytes()
     notify_args.set_params_value(bool_msg, int_msg, bytes_msg, str_msg,
                                  bytes_address_msg)
     tx_hash = sdk.rpc.send_neo_vm_transaction(hex_contract_address, None,
                                               acct1, gas_limit, gas_price,
                                               notify_args, False)
     time.sleep(randint(6, 10))
     event = sdk.rpc.get_smart_contract_event_by_tx_hash(tx_hash)
     states = ContractEventParser.get_states_by_contract_address(
         event, hex_contract_address)
     states[0] = ContractDataParser.to_utf8_str(states[0])
     self.assertEqual('testHello', states[0])
     states[1] = ContractDataParser.to_bool(states[1])
     self.assertEqual(bool_msg, states[1])
     states[2] = ContractDataParser.to_int(states[2])
     self.assertEqual(int_msg, states[2])
     states[3] = ContractDataParser.to_bytes(states[3])
     self.assertEqual(bytes_msg, states[3])
     states[4] = ContractDataParser.to_utf8_str(states[4])
     self.assertEqual(str_msg, states[4])
     states[5] = ContractDataParser.to_b58_address(states[5])
     self.assertEqual(acct1.get_address_base58(), states[5])
Exemplo n.º 9
0
 def test_allowance(self):
     contract_address = '1ddbb682743e9d9e2b71ff419e97a9358c5c4ee9'
     oep4 = sdk.neo_vm.oep4()
     oep4.hex_contract_address = contract_address
     b58_owner_address = acct1.get_address_base58()
     b58_spender_address = acct2.get_address_base58()
     allowance = oep4.allowance(b58_owner_address, b58_spender_address)
     self.assertGreaterEqual(allowance, 1)
Exemplo n.º 10
0
 def test_new_withdraw_ong_transaction(self):
     sdk.rpc.connect_to_test_net()
     b58_claimer_address = acct1.get_address_base58()
     b58_recv_address = acct1.get_address_base58()
     b58_payer_address = acct1.get_address_base58()
     amount = 1
     gas_price = 500
     gas_limit = 20000
     for _ in range(3):
         tx = sdk.native_vm.asset().new_withdraw_ong_transaction(
             b58_claimer_address, b58_recv_address, amount,
             b58_payer_address, gas_limit, gas_price)
         tx.add_sign_transaction(acct1)
         try:
             tx_hash = sdk.rpc.send_raw_transaction(tx)
             self.assertEqual(64, len(tx_hash))
         except SDKException as e:
             msg = 'already in the tx pool'
             self.assertTrue(msg in e.args[1])
Exemplo n.º 11
0
    def test_transfer_multi(self):
        sdk = OntologySdk()
        sdk.rpc.connect_to_test_net()
        contract_address = '1ddbb682743e9d9e2b71ff419e97a9358c5c4ee9'
        oep4 = sdk.neo_vm.oep4()
        oep4.hex_contract_address = contract_address
        transfer_list = list()

        b58_from_address1 = acct1.get_address_base58()
        b58_from_address2 = acct2.get_address_base58()
        hex_from_address1 = acct1.get_address_hex()
        hex_from_address2 = acct2.get_address_hex()
        from_address_list = [hex_from_address1, hex_from_address2]

        b58_to_address1 = acct2.get_address_base58()
        b58_to_address2 = acct3.get_address_base58()
        hex_to_address1 = acct2.get_address_hex()
        hex_to_address2 = acct3.get_address_hex()
        to_address_list = [hex_to_address1, hex_to_address2]

        value_list = [1, 2]

        transfer1 = [b58_from_address1, b58_to_address1, value_list[0]]
        transfer2 = [b58_from_address2, b58_to_address2, value_list[1]]

        signers = [acct1, acct2, acct3]
        transfer_list.append(transfer1)
        transfer_list.append(transfer2)

        gas_limit = 20000000
        gas_price = 500

        tx_hash = oep4.transfer_multi(transfer_list, signers[0], signers,
                                      gas_limit, gas_price)
        self.assertEqual(64, len(tx_hash))
        sdk = OntologySdk()
        sdk.rpc.connect_to_test_net()
        time.sleep(randint(6, 10))
        try:
            event = sdk.rpc.get_smart_contract_event_by_tx_hash(tx_hash)
            notify_list = event['Notify'][:-1]
            self.assertEqual(len(transfer_list), len(notify_list))
            for index, notify in enumerate(notify_list):
                self.assertEqual(
                    'transfer',
                    ContractDataParser.to_utf8_str(notify['States'][0]))
                self.assertEqual(from_address_list[index], notify['States'][1])
                self.assertEqual(to_address_list[index], notify['States'][2])
                notify_value = ContractDataParser.to_int(notify['States'][3])
                self.assertEqual(value_list[index], notify_value)
        except SDKException as e:
            raised = False
            self.assertTrue(raised, e)
Exemplo n.º 12
0
 def test_unbound_ong(self):
     acct1_unbound_ong = sdk.native_vm.asset().query_unbound_ong(
         acct1.get_address_base58())
     self.assertGreaterEqual(int(acct1_unbound_ong), 0)
     acct2_unbound_ong = sdk.native_vm.asset().query_unbound_ong(
         acct4.get_address_base58())
     self.assertGreaterEqual(int(acct2_unbound_ong), 0)
     acct3_unbound_ong = sdk.native_vm.asset().query_unbound_ong(
         acct4.get_address_base58())
     self.assertGreaterEqual(int(acct3_unbound_ong), 0)
     acct4_unbound_ong = sdk.native_vm.asset().query_unbound_ong(
         acct4.get_address_base58())
     self.assertGreaterEqual(int(acct4_unbound_ong), 0)
 def test_tx_signature(self):
     b58_from_address = acct1.get_address_base58()
     b58_to_address = acct2.get_address_base58()
     tx = sdk.native_vm.asset().new_transfer_transaction(
         'ont', b58_from_address, b58_to_address, 10, b58_from_address,
         20000, 0)
     tx.sign_transaction(acct1)
     self.assertTrue(
         acct1.verify_signature(tx.hash256(), tx.sig_list[0].sig_data[0]))
     self.assertFalse(
         acct2.verify_signature(tx.hash256(), tx.sig_list[0].sig_data[0]))
     tx.add_sign_transaction(acct2)
     self.assertTrue(
         acct2.verify_signature(tx.hash256(), tx.sig_list[1].sig_data[0]))
Exemplo n.º 14
0
 def test_transfer(self):
     sdk.rpc.connect_to_test_net()
     b58_to_address = acct1.get_address_base58()
     try:
         tx_hash = sdk.native_vm.asset().transfer('ont', acct2,
                                                  b58_to_address, 1, acct4,
                                                  20000, 500)
     except SDKException as e:
         self.assertIn('balance insufficient', e.args[1])
         return
     time.sleep(randint(7, 12))
     event = sdk.rpc.get_smart_contract_event_by_tx_hash(tx_hash)
     self.assertEqual('0100000000000000000000000000000000000000',
                      event['Notify'][0]['ContractAddress'])
     self.assertEqual('0200000000000000000000000000000000000000',
                      event['Notify'][1]['ContractAddress'])
Exemplo n.º 15
0
 def test_new_approve_transaction(self):
     b58_send_address = acct2.get_address_base58()
     b58_payer_address = acct2.get_address_base58()
     b58_recv_address = acct1.get_address_base58()
     amount = 5
     gas_price = 500
     gas_limit = 20000
     try:
         tx = sdk.native_vm.asset().new_approve_transaction(
             'ont', b58_send_address, b58_recv_address, amount,
             b58_payer_address, gas_limit, gas_price)
         tx.sign_transaction(acct2)
         tx_hash = sdk.rpc.send_raw_transaction(tx)
         self.assertEqual(64, len(tx_hash))
     except SDKException as e:
         self.assertIn('balance insufficient', e.args[1])
Exemplo n.º 16
0
 def test_send_transfer(self):
     sdk.rpc.connect_to_test_net()
     asset = sdk.native_vm.asset()
     from_acct = acct2
     payer = acct4
     b58_to_address = acct1.get_address_base58()
     amount = 1
     gas_price = 500
     gas_limit = 20000
     try:
         tx_hash = asset.send_transfer('ont', from_acct, b58_to_address, amount, payer, gas_limit, gas_price)
     except SDKException as e:
         self.assertIn('balance insufficient', e.args[1])
         return
     time.sleep(randint(6, 10))
     event = sdk.rpc.get_smart_contract_event_by_tx_hash(tx_hash)
     self.assertEqual('0100000000000000000000000000000000000000', event['Notify'][0]['ContractAddress'])
     self.assertEqual('0200000000000000000000000000000000000000', event['Notify'][1]['ContractAddress'])
Exemplo n.º 17
0
    def test_transfer_multi(self):
        contract_address = '1ddbb682743e9d9e2b71ff419e97a9358c5c4ee9'
        oep4 = sdk.neo_vm.oep4()
        oep4.hex_contract_address = contract_address
        transfer_list = list()

        b58_from_address1 = acct1.get_address_base58()
        b58_from_address2 = acct2.get_address_base58()
        from_address_list = [b58_from_address1, b58_from_address2]

        b58_to_address1 = acct2.get_address_base58()
        b58_to_address2 = acct3.get_address_base58()
        to_address_list = [b58_to_address1, b58_to_address2]

        value_list = [1, 2]

        transfer1 = [b58_from_address1, b58_to_address1, value_list[0]]
        transfer2 = [b58_from_address2, b58_to_address2, value_list[1]]

        signers = [acct1, acct2, acct3]
        transfer_list.append(transfer1)
        transfer_list.append(transfer2)

        gas_limit = 20000000
        gas_price = 500

        tx_hash = oep4.transfer_multi(transfer_list, signers[0], signers,
                                      gas_limit, gas_price)
        self.assertEqual(64, len(tx_hash))
        time.sleep(randint(6, 10))
        notify_list = oep4.query_multi_transfer_event(tx_hash)
        try:
            self.assertEqual(len(transfer_list), len(notify_list))
            for index, notify in enumerate(notify_list):
                self.assertEqual('transfer', notify['States'][0])
                self.assertEqual(from_address_list[index], notify['States'][1])
                self.assertEqual(to_address_list[index], notify['States'][2])
                self.assertEqual(value_list[index], notify['States'][3])
        except SDKException as e:
            raised = False
            self.assertTrue(raised, e)
Exemplo n.º 18
0
 def test_query_balance(self):
     b58_address = acct1.get_address_base58()
     try:
         balance = sdk.native_vm.asset().query_balance('ont', b58_address)
         self.assertTrue(isinstance(balance, int))
         self.assertGreaterEqual(balance, 0)
     except SDKException as e:
         self.assertIn('ConnectTimeout', e.args[1])
     try:
         balance = sdk.native_vm.asset().query_balance('ong', b58_address)
         self.assertTrue(isinstance(balance, int))
         self.assertGreaterEqual(balance, 0)
     except SDKException as e:
         self.assertIn('ConnectTimeout', e.args[1])
     b58_address = acct2.get_address_base58()
     try:
         balance = sdk.native_vm.asset().query_balance('ong', b58_address)
         self.assertTrue(isinstance(balance, int))
         self.assertGreaterEqual(balance, 1)
     except SDKException as e:
         self.assertIn('ConnectTimeout', e.args[1])
Exemplo n.º 19
0
 def test_transfer_from(self):
     sdk.rpc.connect_to_test_net()
     b58_from_address = acct1.get_address_base58()
     b58_recv_address = acct2.get_address_base58()
     for _ in range(3):
         try:
             tx_hash = sdk.native_vm.asset().transfer_from(
                 'ont', acct2, b58_from_address, b58_recv_address, 1, acct2,
                 20000, 500)
             self.assertEqual(64, len(tx_hash))
             time.sleep(randint(7, 12))
             event = sdk.rpc.get_smart_contract_event_by_tx_hash(tx_hash)
             self.assertEqual('0100000000000000000000000000000000000000',
                              event['Notify'][0]['ContractAddress'])
             self.assertEqual('0200000000000000000000000000000000000000',
                              event['Notify'][1]['ContractAddress'])
         except SDKException as e:
             msg1 = 'balance insufficient'
             msg2 = 'ConnectTimeout'
             msg3 = 'already in the tx pool'
             self.assertTrue(msg1 in e.args[1] or msg2 in e.args[1]
                             or msg3 in e.args[1])
Exemplo n.º 20
0
 def test_notify_pre_exec(self):
     bool_msg = True
     int_msg = 1024
     list_msg = [1, 1024, 2048]
     str_msg = 'Hello'
     bytes_address_msg = acct1.get_address().to_bytes()
     hex_contract_address = '4855735ffadad50e7000d73e1c4e96f38d225f70'
     notify_args = InvokeFunction('notify_args')
     notify_args.set_params_value(bool_msg, int_msg, list_msg, str_msg,
                                  bytes_address_msg)
     rpc_address = 'http://polaris5.ont.io:20336'
     sdk.set_rpc_address(rpc_address)
     try:
         response = sdk.rpc.send_neo_vm_transaction(hex_contract_address,
                                                    None, None, 0, 0,
                                                    notify_args, True)
     except SDKException as e:
         self.assertIn('already in the tx pool', e.args[1])
         return
     sdk.rpc.connect_to_test_net()
     response['Result'] = ContractDataParser.to_bool(response['Result'])
     self.assertEqual(1, response['State'])
     self.assertEqual(20000, response['Gas'])
     self.assertEqual(True, response['Result'])
     notify = response['Notify'][0]
     self.assertEqual(hex_contract_address, notify['ContractAddress'])
     states = notify['States']
     states[0] = ContractDataParser.to_utf8_str(states[0])
     self.assertEqual('notify args', states[0])
     states[1] = ContractDataParser.to_bool(states[1])
     self.assertEqual(True, states[1])
     states[2] = ContractDataParser.to_int(states[2])
     self.assertEqual(int_msg, states[2])
     states[3] = ContractDataParser.to_int_list(states[3])
     self.assertEqual(list_msg, states[3])
     states[4] = ContractDataParser.to_utf8_str(states[4])
     self.assertEqual(str_msg, states[4])
     states[5] = ContractDataParser.to_b58_address(states[5])
     self.assertEqual(acct1.get_address_base58(), states[5])
    def test_get_balance(self):
        sdk = OntologySdk()
        sdk.rpc.connect_to_test_net()
        base58_address = 'ANH5bHrrt111XwNEnuPZj6u95Dd6u7G4D6'
        address_balance = sdk.rpc.get_balance(base58_address)
        try:
            address_balance['ont']
        except KeyError:
            raised = True
            self.assertFalse(raised, 'Exception raised')
        try:
            address_balance['ong']
        except KeyError:
            raised = True
            self.assertFalse(raised, 'Exception raised')
        address_balance = sdk.rpc.get_balance(acct1.get_address_base58())
        try:
            address_balance['ont']
        except KeyError:
            raised = True
            self.assertFalse(raised, 'Exception raised')
        try:
            address_balance['ong']
        except KeyError:
            raised = True
            self.assertFalse(raised, 'Exception raised')

        multi_address_balance = sdk.rpc.get_balance(multi_address.b58encode())
        try:
            multi_address_balance['ont']
        except KeyError:
            raised = True
            self.assertFalse(raised, 'Exception raised')
        try:
            multi_address_balance['ong']
        except KeyError:
            raised = True
            self.assertFalse(raised, 'Exception raised')
Exemplo n.º 22
0
 def test_transfer_multi_args(self):
     transfer_1 = [
         acct1.get_address().to_bytes(),
         acct2.get_address().to_bytes(), 10
     ]
     transfer_2 = [
         acct2.get_address().to_bytes(),
         acct3.get_address().to_bytes(), 100
     ]
     hex_contract_address = 'ca91a73433c016fbcbcf98051d385785a6a5d9be'
     func = InvokeFunction('transfer_multi_args')
     func.set_params_value(transfer_1, transfer_2)
     try:
         tx_hash = sdk.rpc.send_neo_vm_transaction(hex_contract_address,
                                                   acct1, acct2, gas_limit,
                                                   gas_price, func, False)
         self.assertEqual(64, len(tx_hash))
     except SDKException as e:
         self.assertIn('already in the tx pool', e.args[1])
         return
     time.sleep(randint(6, 10))
     event = sdk.rpc.get_smart_contract_event_by_tx_hash(tx_hash)
     states = ContractEventParser.get_states_by_contract_address(
         event, hex_contract_address)
     states[0] = ContractDataParser.to_utf8_str(states[0])
     self.assertEqual('transfer_multi_args', states[0])
     states[1][0][0] = ContractDataParser.to_b58_address(states[1][0][0])
     self.assertEqual(acct1.get_address_base58(), states[1][0][0])
     states[1][0][1] = ContractDataParser.to_b58_address(states[1][0][1])
     self.assertEqual(acct2.get_address_base58(), states[1][0][1])
     states[1][0][2] = ContractDataParser.to_int(states[1][0][2])
     self.assertEqual(10, states[1][0][2])
     states[1][1][0] = ContractDataParser.to_b58_address(states[1][1][0])
     self.assertEqual(acct2.get_address_base58(), states[1][1][0])
     states[1][1][1] = ContractDataParser.to_b58_address(states[1][1][1])
     self.assertEqual(acct3.get_address_base58(), states[1][1][1])
     states[1][1][2] = ContractDataParser.to_int(states[1][1][2])
     self.assertEqual(100, states[1][1][2])
Exemplo n.º 23
0
 def test_oep4_approve(self):
     hex_contract_address = '1ddbb682743e9d9e2b71ff419e97a9358c5c4ee9'
     func = InvokeFunction('approve')
     bytes_owner_address = acct1.get_address().to_bytes()
     bytes_spender_address = acct2.get_address().to_bytes()
     amount = 10
     func.set_params_value(bytes_owner_address, bytes_spender_address,
                           amount)
     tx_hash = sdk.rpc.send_neo_vm_transaction(hex_contract_address, acct1,
                                               acct2, gas_limit, gas_price,
                                               func, False)
     self.assertEqual(64, len(tx_hash))
     time.sleep(randint(6, 10))
     event = sdk.rpc.get_smart_contract_event_by_tx_hash(tx_hash)
     states = ContractEventParser.get_states_by_contract_address(
         event, hex_contract_address)
     states[0] = ContractDataParser.to_utf8_str(states[0])
     self.assertEqual('approval', states[0])
     states[1] = ContractDataParser.to_b58_address(states[1])
     self.assertEqual(acct1.get_address_base58(), states[1])
     states[2] = ContractDataParser.to_b58_address(states[2])
     self.assertEqual(acct2.get_address_base58(), states[2])
     states[3] = ContractDataParser.to_int(states[3])
     self.assertEqual(amount, states[3])
Exemplo n.º 24
0
    def test_multi_serialize(self):
        pub_keys = [
            acct1.get_public_key_bytes(),
            acct2.get_public_key_bytes(),
            acct3.get_public_key_bytes()
        ]
        m = 2
        multi_address = Address.address_from_multi_pub_keys(m, pub_keys)
        b58_multi_address = multi_address.b58encode()
        b58_acct1_address = acct1.get_address_base58()
        b58_acct2_address = acct2.get_address_base58()
        gas_price = 500
        gas_limit = 20000
        tx1 = sdk.native_vm.asset().new_transfer_transaction(
            'ong', b58_multi_address, b58_acct2_address, 1000000000,
            b58_acct1_address, gas_limit, gas_price)
        tx_bytes = tx1.serialize()
        tx2 = Transaction.deserialize_from(tx_bytes)
        self.assertEqual(dict(tx1), dict(tx2))

        tx2.sign_transaction(acct1)
        tx_bytes = tx2.serialize()
        tx3 = Transaction.deserialize_from(tx_bytes)
        self.assertEqual(dict(tx2), dict(tx3))
        tx3.add_multi_sign_transaction(m, pub_keys, acct1)
        tx_bytes = tx3.serialize()
        tx4 = Transaction.deserialize_from(tx_bytes)
        self.assertEqual(dict(tx3), dict(tx4))
        tx4.add_multi_sign_transaction(m, pub_keys, acct2)
        tx_bytes = tx4.serialize()
        tx5 = Transaction.deserialize_from(tx_bytes)
        self.assertEqual(dict(tx4), dict(tx5))
        tx_hash = sdk.rpc.send_raw_transaction(tx5)
        self.assertEqual(64, len(tx_hash))
        sleep(6)
        event = sdk.rpc.get_smart_contract_event_by_tx_hash(tx_hash)
        contract_address = '0200000000000000000000000000000000000000'
        notify = ContractEventParser.get_notify_list_by_contract_address(
            event, contract_address)
        for event in notify:
            self.assertEqual(event['States'][0], 'transfer')
        multi_address = Address.address_from_multi_pub_keys(m, pub_keys[::-1])
        b58_multi_address = multi_address.b58encode()
        b58_acct1_address = acct1.get_address_base58()
        b58_acct2_address = acct2.get_address_base58()
        tx1 = sdk.native_vm.asset().new_transfer_transaction(
            'ong', b58_multi_address, b58_acct2_address, 100000,
            b58_acct1_address, gas_limit, gas_price)
        tx_bytes = tx1.serialize()
        tx2 = Transaction.deserialize_from(tx_bytes)
        self.assertEqual(dict(tx1), dict(tx2))

        tx2.sign_transaction(acct1)
        tx_bytes = tx2.serialize()
        tx3 = Transaction.deserialize_from(tx_bytes)
        self.assertEqual(dict(tx2), dict(tx3))
        tx3.add_multi_sign_transaction(m, pub_keys, acct1)
        tx_bytes = tx3.serialize()
        tx4 = Transaction.deserialize_from(tx_bytes)
        self.assertEqual(dict(tx3), dict(tx4))
        tx4.add_multi_sign_transaction(m, pub_keys, acct2)
        tx_bytes = tx4.serialize()
        tx5 = Transaction.deserialize_from(tx_bytes)
        self.assertEqual(dict(tx4), dict(tx5))
        tx_hash = sdk.rpc.send_raw_transaction(tx5)
        self.assertEqual(64, len(tx_hash))
        sleep(6)
        event = sdk.rpc.get_smart_contract_event_by_tx_hash(tx_hash)
        contract_address = '0200000000000000000000000000000000000000'
        notify = ContractEventParser.get_notify_list_by_contract_address(
            event, contract_address)
        for event in notify:
            self.assertEqual(event['States'][0], 'transfer')