def setUp(self): pub_keys = [acct1.get_public_key_bytes(), acct2.get_public_key_bytes(), acct3.get_public_key_bytes()] multi_address = Address.from_multi_pub_keys(2, pub_keys) self.address_list = [acct1.get_address_base58(), acct2.get_address_base58(), acct3.get_address_base58(), acct4.get_address_base58(), multi_address.b58encode()] self.gas_price = 500 self.gas_limit = 20000
async def test_get_balance(self): pub_keys = [acct1.get_public_key_bytes(), acct2.get_public_key_bytes(), acct3.get_public_key_bytes()] multi_address = Address.from_multi_pub_keys(2, pub_keys) address_list = [acct1.get_address_base58(), acct2.get_address_base58(), acct3.get_address_base58(), acct4.get_address_base58(), multi_address.b58encode()] for address in address_list: balance = await sdk.aio_rpc.get_balance(address) self.assertTrue(isinstance(balance, dict)) self.assertGreaterEqual(balance['ONT'], 0) self.assertGreaterEqual(balance['ONG'], 0)
def test_add_multi_sign_transaction(self): pub_keys = [ acct1.get_public_key_bytes(), acct2.get_public_key_bytes(), acct3.get_public_key_bytes() ] m = 2 b58_multi_address = Address.from_multi_pub_keys(m, pub_keys).b58encode() amount = 1 gas_price = 500 gas_limit = 20000 tx_hash = sdk.native_vm.ont().transfer(acct2, b58_multi_address, amount, acct2, gas_price, gas_limit) self.assertEqual(64, len(tx_hash)) tx_hash = sdk.native_vm.ong().transfer(acct2, b58_multi_address, amount, acct2, gas_price, gas_limit) 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.ong().new_transfer_tx(b58_acct1_address, b58_multi_address, amount, b58_acct1_address, gas_price, gas_limit) tx.add_sign_transaction(acct1) tx = sdk.native_vm.ont().new_transfer_tx(b58_multi_address, b58_acct2_address, amount, b58_acct1_address, gas_price, gas_limit) 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))
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.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.ong().new_transfer_tx(b58_multi_address, b58_acct2_address, 1, b58_acct1_address, gas_price, gas_limit) 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)) time.sleep(randint(10, 15)) event = sdk.rpc.get_contract_event_by_tx_hash(tx_hash) contract_address = '0200000000000000000000000000000000000000' notify = Event.get_notify_by_contract_address(event, contract_address) for event in notify: self.assertEqual(event['States'][0], 'transfer') multi_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.ong().new_transfer_tx(b58_multi_address, b58_acct2_address, 100000, b58_acct1_address, gas_price, gas_limit) 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)) time.sleep(randint(10, 15)) event = sdk.rpc.get_contract_event_by_tx_hash(tx_hash) contract_address = '0200000000000000000000000000000000000000' notify = Event.get_notify_by_contract_address(event, contract_address) for event in notify: self.assertEqual(event['States'][0], 'transfer')