示例#1
0
 def test_send_raw_transaction_pre_exec(self):
     b58_address = acct1.get_address_base58()
     tx = sdk.native_vm.ong().new_transfer_tx(b58_address,
                                              acct2.get_address(), 2,
                                              b58_address, 500, 20000)
     tx.sign_transaction(acct1)
     result = sdk.rpc.send_raw_transaction_pre_exec(tx)
     self.assertTrue(NeoData.to_bool(result['Result']))
     self.assertEqual(result['Gas'], 20000)
     self.assertEqual(result['State'], 1)
示例#2
0
 def test_oep4_transfer(self):
     hex_contract_address = '1ddbb682743e9d9e2b71ff419e97a9358c5c4ee9'
     func = InvokeFunction('transfer')
     bytes_from_address = acct1.get_address().to_bytes()
     bytes_to_address = acct2.get_address().to_bytes()
     value = 1
     func.set_params_value(bytes_from_address, bytes_to_address, value)
     tx_hash = self.send_tx(hex_contract_address, acct1, acct2, func)
     if len(tx_hash) == 0:
         return
     time.sleep(randint(10, 15))
     event = sdk.rpc.get_contract_event_by_tx_hash(tx_hash)
     states = Event.get_states_by_contract_address(event,
                                                   hex_contract_address)
     states[0] = Data.to_utf8_str(states[0])
     self.assertEqual('transfer', states[0])
     states[1] = Data.to_b58_address(states[1])
     self.assertEqual(acct1.get_address().b58encode(), states[1])
     states[2] = Data.to_b58_address(states[2])
     self.assertEqual(acct2.get_address().b58encode(), states[2])
     states[3] = Data.to_int(states[3])
     self.assertEqual(value, states[3])
示例#3
0
    def test_oep4_transfer_multi(self):
        hex_contract_address = '1ddbb682743e9d9e2b71ff419e97a9358c5c4ee9'
        bytes_from_address1 = acct1.get_address().to_bytes()
        bytes_to_address1 = acct2.get_address().to_bytes()
        value1 = 2
        transfer1 = [bytes_from_address1, bytes_to_address1, value1]
        bytes_from_address2 = acct2.get_address().to_bytes()
        bytes_to_address2 = acct3.get_address().to_bytes()
        value2 = 1
        transfer2 = [bytes_from_address2, bytes_to_address2, value2]
        func = InvokeFunction('transferMulti')
        func.set_params_value(transfer1, transfer2)
        tx_hash = sdk.default_network.send_neo_vm_transaction(
            hex_contract_address, acct1, acct2, self.gas_price, self.gas_limit,
            func, False)
        time.sleep(randint(10, 15))
        event = sdk.rpc.get_contract_event_by_tx_hash(tx_hash)
        states_list = Event.get_states_by_contract_address(
            event, hex_contract_address)
        states_list[0][0] = Data.to_utf8_str(states_list[0][0])
        self.assertEqual('transfer', states_list[0][0])
        states_list[0][1] = Data.to_b58_address(states_list[0][1])
        self.assertEqual(acct1.get_address().b58encode(), states_list[0][1])
        states_list[0][2] = Data.to_b58_address(states_list[0][2])
        self.assertEqual(acct2.get_address().b58encode(), states_list[0][2])
        states_list[0][3] = Data.to_int(states_list[0][3])
        self.assertEqual(value1, states_list[0][3])

        states_list[1][0] = Data.to_utf8_str(states_list[1][0])
        self.assertEqual('transfer', states_list[1][0])
        states_list[1][1] = Data.to_b58_address(states_list[1][1])
        self.assertEqual(acct2.get_address().b58encode(), states_list[1][1])
        states_list[1][2] = Data.to_b58_address(states_list[1][2])
        self.assertEqual(acct3.get_address().b58encode(), states_list[1][2])
        states_list[1][3] = Data.to_int(states_list[1][3])
        self.assertEqual(value2, states_list[1][3])
示例#4
0
 def test_transfer(self):
     amount = 1
     ont = sdk.native_vm.ont()
     tx_hash = ont.transfer(acct1, acct2.get_address(), amount, acct4, self.gas_price, self.gas_limit)
     time.sleep(randint(14, 20))
     event = sdk.default_network.get_contract_event_by_tx_hash(tx_hash)
     notify = Event.get_notify_by_contract_address(event, ont.contract_address)
     self.assertEqual('transfer', notify['States'][0])
     self.assertEqual(acct1.get_address_base58(), notify['States'][1])
     self.assertEqual(acct2.get_address_base58(), notify['States'][2])
     self.assertEqual(amount, notify['States'][3])
     notify = Event.get_notify_by_contract_address(event, sdk.native_vm.aio_ong().contract_address)
     self.assertEqual('transfer', notify['States'][0])
     self.assertEqual(acct4.get_address_base58(), notify['States'][1])
     self.assertEqual(self.gas_price * self.gas_limit, notify['States'][3])
 async def test_transfer(self):
     amount, gas_price, gas_limit = 1, 500, 20000
     tx_hash = await sdk.native_vm.aio_ong().transfer(
         acct1, acct2.get_address(), amount, acct4, gas_price, gas_limit)
     await asyncio.sleep(randint(14, 20))
     event = await sdk.aio_rpc.get_contract_event_by_tx_hash(tx_hash)
     notify = Event.get_notify_by_contract_address(
         event,
         sdk.native_vm.aio_ong().contract_address)
     self.assertEqual('transfer', notify[0]['States'][0])
     self.assertEqual(acct1.get_address_base58(), notify[0]['States'][1])
     self.assertEqual(acct2.get_address_base58(), notify[0]['States'][2])
     self.assertEqual(amount, notify[0]['States'][3])
     notify = Event.get_notify_by_contract_address(
         event,
         sdk.native_vm.aio_ong().contract_address)
     self.assertEqual('transfer', notify[1]['States'][0])
     self.assertEqual(acct4.get_address_base58(), notify[1]['States'][1])
     self.assertEqual(gas_price * gas_limit, notify[1]['States'][3])
 def test_transfer_tx(self):
     amount = 100
     func = WasmInvokeFunction('transfer')
     func.set_params_value(acct1.get_address(), Address.b58decode('AazEvfQPcQ2GEFFPLF1ZLwQ7K5jDn81hve'), amount)
     tx = sdk.wasm_vm.make_invoke_transaction(self.oep4_contract_address, func, acct2.get_address(), self.gas_price,
                                              self.gas_limit)
     target_payload = '0faeff23255536928b308e5caa38bc2dc14f30c341087472616e7366657246b1a18af6b7c9f8a4602f9f73' \
                      'eeb3030f0c29b7d2c124dd088190f709b684e0bc676d70c41b377664000000000000000000000000000000'
     self.assertEqual(target_payload, tx.payload.hex())
     tx.sign_transaction(acct1, acct2)
     result = sdk.rpc.send_raw_transaction_pre_exec(tx)
     self.assertEqual('01', result.get('Result'))
     self.assertEqual(1, result.get('State'))
     notify_list = Event.get_event_from_event_list_by_contract_address(result.get('Notify'),
                                                                       self.oep4_contract_address)
     self.assertEqual(self.oep4_contract_address, notify_list[0].get('ContractAddress'))
     states = notify_list[1].get('States')
     self.assertEqual('transfer', WasmData.to_utf8(states[0]))
     self.assertEqual(acct1.get_address().b58encode(), WasmData.to_b58_address(states[1]))
     self.assertEqual('AazEvfQPcQ2GEFFPLF1ZLwQ7K5jDn81hve', WasmData.to_b58_address(states[2]))
     self.assertEqual(amount, WasmData.to_int(states[3]))
示例#7
0
 def test_invoke_add_transaction(self):
     func = WasmInvokeFunction('add')
     func.set_params_value(-2, 3)
     tx = sdk.wasm_vm.make_invoke_transaction(
         self.basic_test_case_contract_address, func, acct3.get_address(),
         self.gas_price, self.gas_limit)
     target_payload = '5daf0ec53b21abfab6459c7ba7f760c376e18ebf2403616464fefffff' \
                      'fffffffffffffffffffffffff03000000000000000000000000000000'
     self.assertEqual(target_payload, tx.payload.hex())
     tx.sign_transaction(acct3)
     result = sdk.rpc.send_raw_transaction_pre_exec(tx).get('Result', '')
     self.assertEqual('01000000000000000000000000000000', result)
     self.assertEqual(1, WasmData.to_int(result))
     func = WasmInvokeFunction('add')
     func.set_params_value(1, 2)
     tx = sdk.wasm_vm.make_invoke_transaction(
         self.basic_test_case_contract_address, func, acct3.get_address(),
         self.gas_price, self.gas_limit)
     target_payload = '5daf0ec53b21abfab6459c7ba7f760c376e18ebf24036164640100000' \
                      '000000000000000000000000002000000000000000000000000000000'
     self.assertEqual(target_payload, tx.payload.hex())
     tx.sign_transaction(acct3)
     result = sdk.rpc.send_raw_transaction_pre_exec(tx).get('Result', '')
     self.assertEqual('03000000000000000000000000000000', result)
     self.assertEqual(3, WasmData.to_int(result))
     func.set_params_value(2**127 - 1, -2**127)
     tx = sdk.wasm_vm.make_invoke_transaction(
         self.basic_test_case_contract_address, func, acct2.get_address(),
         self.gas_price, self.gas_limit)
     target_payload = '5daf0ec53b21abfab6459c7ba7f760c376e18ebf2403616464fffffff' \
                      'fffffffffffffffffffffff7f00000000000000000000000000000080'
     self.assertEqual(target_payload, tx.payload.hex())
     tx.sign_transaction(acct2)
     result = sdk.rpc.send_raw_transaction_pre_exec(tx).get('Result')
     self.assertEqual('ffffffffffffffffffffffffffffffff', result)
     self.assertEqual(-1, WasmData.to_int(result))
示例#8
0
 async def test_allowance(self):
     oep4 = sdk.neo_vm.aio_oep4()
     oep4.hex_contract_address = contract_address
     allowance = await oep4.allowance(acct1.get_address(), acct2.get_address())
     self.assertGreaterEqual(allowance, 1)
示例#9
0
 async def test_approve(self):
     tx_hash = await sdk.native_vm.aio_ont().approve(
         acct1, acct2.get_address(), 10, acct2, self.gas_price,
         self.gas_limit)
     self.assertEqual(64, len(tx_hash))
 async def test_approve(self):
     tx_hash = await sdk.native_vm.aio_ong().approve(
         acct1, acct2.get_address(), 10, acct2, 500, 20000)
     self.assertEqual(64, len(tx_hash))