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)
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])
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])
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]))
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))
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)
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))