fixed bug where lbrynet failed to start with single-key accounts in the wallet

This commit is contained in:
Lex Berezhny 2019-05-04 17:22:32 -04:00
parent d61ddbb950
commit d7c2e4e9b3
2 changed files with 23 additions and 5 deletions

View file

@ -4,7 +4,7 @@ import binascii
from hashlib import sha256 from hashlib import sha256
from string import hexdigits from string import hexdigits
from torba.client.baseaccount import BaseAccount from torba.client.baseaccount import BaseAccount, HierarchicalDeterministic
from torba.client.basetransaction import TXORef from torba.client.basetransaction import TXORef
@ -167,6 +167,7 @@ class Account(BaseAccount):
)) ))
async def save_max_gap(self): async def save_max_gap(self):
if issubclass(self.address_generator, HierarchicalDeterministic):
gap = await self.get_max_gap() gap = await self.get_max_gap()
self.receiving.gap = max(20, gap['max_receiving_gap'] + 1) self.receiving.gap = max(20, gap['max_receiving_gap'] + 1)
self.change.gap = max(6, gap['max_change_gap'] + 1) self.change.gap = max(6, gap['max_change_gap'] + 1)

View file

@ -95,3 +95,20 @@ class TestAccount(AsyncioTestCase):
account = Account.from_dict(self.ledger, Wallet(), account_data) account = Account.from_dict(self.ledger, Wallet(), account_data)
account_data['ledger'] = 'lbc_mainnet' account_data['ledger'] = 'lbc_mainnet'
self.assertDictEqual(account_data, account.to_dict()) self.assertDictEqual(account_data, account.to_dict())
async def test_save_max_gap(self):
account = Account.generate(
self.ledger, Wallet(), 'lbryum', {
'name': 'deterministic-chain',
'receiving': {'gap': 3, 'maximum_uses_per_address': 2},
'change': {'gap': 4, 'maximum_uses_per_address': 2}
}
)
self.assertEqual(account.receiving.gap, 3)
self.assertEqual(account.change.gap, 4)
await account.save_max_gap()
self.assertEqual(account.receiving.gap, 20)
self.assertEqual(account.change.gap, 6)
# doesn't fail for single-address account
account2 = Account.generate(self.ledger, Wallet(), 'lbryum', {'name': 'single-address'})
await account2.save_max_gap()