Ejemplo n.º 1
0
    def test_get_unused_ots_index2(self):
        old_value = config.dev.max_ots_tracking_index
        config.dev.max_ots_tracking_index = 128

        try:
            random_xmss = get_random_xmss(xmss_height=8)
            addr_state = AddressState.get_default(random_xmss.address)
            self.assertEqual(addr_state.get_unused_ots_index(), 0)
            addr_state.set_ots_key(0)
            self.assertEqual(addr_state.get_unused_ots_index(), 1)
            addr_state.set_ots_key(2)
            self.assertEqual(addr_state.get_unused_ots_index(), 1)
            addr_state.set_ots_key(1)
            self.assertEqual(addr_state.get_unused_ots_index(), 3)

            for i in range(
                    3,
                    min(2**addr_state.height,
                        config.dev.max_ots_tracking_index)):
                addr_state.set_ots_key(i)
                self.assertEqual(addr_state.get_unused_ots_index(), i + 1)

            self.assertEqual(addr_state.get_unused_ots_index(),
                             config.dev.max_ots_tracking_index)

            for i in range(config.dev.max_ots_tracking_index,
                           2**addr_state.height):
                addr_state.set_ots_key(i)

            self.assertIsNone(addr_state.get_unused_ots_index())
        finally:
            config.dev.max_ots_tracking_index = old_value
Ejemplo n.º 2
0
 def test_get_default_coinbase(self):
     # Make sure that Coinbase AddressState gets all the coins supply by default
     coinbase_addr_state = AddressState.get_default(
         config.dev.coinbase_address)
     self.assertEqual(
         coinbase_addr_state.balance,
         int(config.dev.max_coin_supply * config.dev.shor_per_quanta))
Ejemplo n.º 3
0
    def test_relaySlaveTxnBySlave(self):
        with set_xrd_dir("wallet_ver1"):
            walletd = WalletD()
            walletd._public_stub.PushTransaction = Mock(
                return_value=xrd_pb2.PushTransactionResp(error_code=xrd_pb2.PushTransactionResp.SUBMITTED))

            service = WalletAPIService(walletd)

            resp = service.AddNewAddressWithSlaves(xrdwallet_pb2.AddNewAddressWithSlavesReq(), context=None)
            qaddress = resp.address
            addr_state = AddressState.get_default(walletd.qaddress_to_address(qaddress))
            slaves = walletd.get_slave_list(qaddress)

            addr_state.add_slave_pks_access_type(bytes(hstr2bin(slaves[0][0].pk)), 0)
            walletd._public_stub.GetAddressState = Mock(
                return_value=xrd_pb2.GetAddressStateResp(state=addr_state.pbdata))

            alice_xmss = get_alice_xmss(4)
            slave_pks = [alice_xmss.pk]
            access_types = [0]

            resp = service.RelaySlaveTxnBySlave(
                xrdwallet_pb2.RelaySlaveTxnBySlaveReq(slave_pks=slave_pks,
                                                      access_types=access_types,
                                                      fee=100000000,
                                                      master_address=qaddress), context=None)

            self.assertEqual(resp.code, 0)
            self.assertIsNotNone(resp.tx)
Ejemplo n.º 4
0
    def test_relaySlaveTxn(self):
        with set_xrd_dir("wallet_ver1"):
            walletd = WalletD()
            service = WalletAPIService(walletd)

            resp = service.AddNewAddress(xrdwallet_pb2.AddNewAddressReq(), context=None)
            qaddress = resp.address
            addr_state = AddressState.get_default(walletd.qaddress_to_address(qaddress))
            walletd._public_stub.GetAddressState = Mock(
                return_value=xrd_pb2.GetAddressStateResp(state=addr_state.pbdata))
            walletd._public_stub.IsSlave = Mock(
                return_value=xrd_pb2.IsSlaveResp(result=True))
            walletd._public_stub.GetOTS = Mock(
                return_value=xrd_pb2.GetOTSResp(next_unused_ots_index=0,
                                                unused_ots_index_found=True))

            alice_xmss = get_alice_xmss(4)
            slave_pks = [alice_xmss.pk]
            access_types = [0]

            walletd._public_stub.PushTransaction = Mock(
                return_value=xrd_pb2.PushTransactionResp(error_code=xrd_pb2.PushTransactionResp.SUBMITTED))

            resp = service.RelaySlaveTxn(xrdwallet_pb2.RelaySlaveTxnReq(slave_pks=slave_pks,
                                                                        access_types=access_types,
                                                                        fee=100000000,
                                                                        master_address=None,
                                                                        signer_address=qaddress,
                                                                        ots_index=0), context=None)

            self.assertEqual(resp.code, 0)
            self.assertIsNotNone(resp.tx)
Ejemplo n.º 5
0
    def test_relayTokenTxnBySlave(self):
        with set_xrd_dir("wallet_ver1"):
            walletd = WalletD()
            walletd._public_stub.PushTransaction = Mock(
                return_value=xrd_pb2.PushTransactionResp(error_code=xrd_pb2.PushTransactionResp.SUBMITTED))

            service = WalletAPIService(walletd)

            resp = service.AddNewAddressWithSlaves(xrdwallet_pb2.AddNewAddressWithSlavesReq(), context=None)
            qaddress = resp.address
            addr_state = AddressState.get_default(walletd.qaddress_to_address(qaddress))
            slaves = walletd.get_slave_list(qaddress)

            addr_state.add_slave_pks_access_type(bytes(hstr2bin(slaves[0][0].pk)), 0)
            walletd._public_stub.GetAddressState = Mock(
                return_value=xrd_pb2.GetAddressStateResp(state=addr_state.pbdata))

            alice_xmss = get_alice_xmss(4)
            bob_xmss = get_bob_xmss(4)
            qaddresses = [alice_xmss.qaddress, bob_xmss.qaddress]
            amounts = [1000000000, 1000000000]

            resp = service.RelayTokenTxnBySlave(
                xrdwallet_pb2.RelayTokenTxnBySlaveReq(symbol=b'xrd',
                                                      name=b'Quantum Resistant Ledger',
                                                      owner=alice_xmss.qaddress,
                                                      decimals=5,
                                                      addresses=qaddresses,
                                                      amounts=amounts,
                                                      fee=100000000,
                                                      master_address=qaddress), context=None)

            self.assertEqual(resp.code, 0)
            self.assertIsNotNone(resp.tx)
Ejemplo n.º 6
0
    def test_relayMessageTxn(self):
        with set_xrd_dir("wallet_ver1"):
            walletd = WalletD()
            walletd._public_stub.PushTransaction = Mock(
                return_value=xrd_pb2.PushTransactionResp(error_code=xrd_pb2.PushTransactionResp.SUBMITTED))

            service = WalletAPIService(walletd)

            resp = service.AddNewAddress(xrdwallet_pb2.AddNewAddressReq(), context=None)
            qaddress = resp.address
            addr_state = AddressState.get_default(walletd.qaddress_to_address(qaddress))
            walletd._public_stub.GetAddressState = Mock(
                return_value=xrd_pb2.GetAddressStateResp(state=addr_state.pbdata))
            walletd._public_stub.GetOTS = Mock(
                return_value=xrd_pb2.GetOTSResp(next_unused_ots_index=0,
                                                unused_ots_index_found=True))

            resp = service.RelayMessageTxn(xrdwallet_pb2.RelayMessageTxnReq(message=b'Hello xrd!',
                                                                            fee=100000000,
                                                                            master_address=None,
                                                                            signer_address=qaddress,
                                                                            ots_index=0), context=None)

            self.assertEqual(0, resp.code)
            self.assertIsNotNone(resp.tx)
Ejemplo n.º 7
0
 def test_get_unused_ots_index(self):
     random_xmss = get_random_xmss(xmss_height=4)
     addr_state = AddressState.get_default(random_xmss.address)
     self.assertEqual(addr_state.get_unused_ots_index(), 0)
     addr_state.set_ots_key(0)
     self.assertEqual(addr_state.get_unused_ots_index(), 1)
     addr_state.set_ots_key(2)
     self.assertEqual(addr_state.get_unused_ots_index(), 1)
     addr_state.set_ots_key(1)
     self.assertEqual(addr_state.get_unused_ots_index(), 3)
     for i in range(
             3, min(2**addr_state.height,
                    config.dev.max_ots_tracking_index)):
         addr_state.set_ots_key(i)
     self.assertIsNone(addr_state.get_unused_ots_index())
Ejemplo n.º 8
0
    def test_ots_key_validation(self):
        random_xmss = get_random_xmss(xmss_height=4)
        addr = AddressState.get_default(random_xmss.address)
        ots_indexes = list(range(0, 2**random_xmss.height))
        shuffle(ots_indexes)

        for i in ots_indexes:
            if i < config.dev.max_ots_tracking_index:
                self.assertFalse(addr.ots_key_reuse(i))
            else:
                result = addr.ots_key_reuse(i)
                if i > addr.ots_counter:
                    self.assertFalse(result)
                else:
                    self.assertTrue(result)

            addr.set_ots_key(i)

            self.assertTrue(addr.ots_key_reuse(i))
Ejemplo n.º 9
0
    def test_relayTokenTxn(self):
        with set_xrd_dir("wallet_ver1"):
            walletd = WalletD()
            service = WalletAPIService(walletd)

            resp = service.AddNewAddress(xrdwallet_pb2.AddNewAddressReq(), context=None)
            qaddress = resp.address
            addr_state = AddressState.get_default(walletd.qaddress_to_address(qaddress))
            walletd._public_stub.GetAddressState = Mock(
                return_value=xrd_pb2.GetAddressStateResp(state=addr_state.pbdata))
            walletd._public_stub.IsSlave = Mock(
                return_value=xrd_pb2.IsSlaveResp(result=True))
            walletd._public_stub.GetOTS = Mock(
                return_value=xrd_pb2.GetOTSResp(next_unused_ots_index=0,
                                                unused_ots_index_found=True))

            alice_xmss = get_alice_xmss(4)
            bob_xmss = get_bob_xmss(4)
            qaddresses = [alice_xmss.qaddress, bob_xmss.qaddress]
            amounts = [1000000000, 1000000000]

            walletd._public_stub.PushTransaction = Mock(
                return_value=xrd_pb2.PushTransactionResp(error_code=xrd_pb2.PushTransactionResp.SUBMITTED))

            resp = service.RelayTokenTxn(xrdwallet_pb2.RelayTokenTxnReq(symbol=b'xrd',
                                                                        name=b'Quantum Resistant Ledger',
                                                                        owner=alice_xmss.qaddress,
                                                                        decimals=5,
                                                                        addresses=qaddresses,
                                                                        amounts=amounts,
                                                                        fee=100000000,
                                                                        master_address=None,
                                                                        signer_address=qaddress,
                                                                        ots_index=0), context=None)

            self.assertEqual(resp.code, 0)
            self.assertIsNotNone(resp.tx)
Ejemplo n.º 10
0
 def setUp(self):
     self.addr_state = AddressState.get_default(alice.address)