Esempio n. 1
0
 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.websocket.get_balance(address)
         self.assertTrue(isinstance(balance, dict))
         self.assertGreaterEqual(balance['ONT'], 0)
         self.assertGreaterEqual(balance['ONG'], 0)
Esempio n. 3
0
 def test_sort_public_key(self):
     pub_keys = [
         acct1.get_public_key_bytes(),
         acct2.get_public_key_bytes(),
         acct3.get_public_key_bytes()
     ]
     builder = ProgramBuilder()
     sort_pub_keys = builder.sort_public_keys(pub_keys)
     self.assertEqual(
         "023cab3b268c4f268456a972c672c276d23a9c3ca3dfcfc0004d786adbf1fb9282",
         sort_pub_keys[0].hex())
     self.assertEqual(
         "03d0fdb54acba3f81db3a6e16fa02e7ea3678bd205eb4ed2f1cfa8ab5e5d45633e",
         sort_pub_keys[1].hex())
     self.assertEqual(
         "02e8e84be09b87985e7f9dfa74298f6bb7f70f85515afca7e041fe964334e4b6c1",
         sort_pub_keys[2].hex())
Esempio n. 4
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))
Esempio n. 5
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.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')