forked from LBRYCommunity/lbry-sdk
properly format scripthash address on output
This commit is contained in:
parent
fe469ae57f
commit
464cfd475e
4 changed files with 17 additions and 6 deletions
|
@ -723,8 +723,10 @@ class Ledger(metaclass=LedgerRegistry):
|
||||||
self.hash160_to_address(txi.txo_ref.txo.pubkey_hash)
|
self.hash160_to_address(txi.txo_ref.txo.pubkey_hash)
|
||||||
)
|
)
|
||||||
for txo in tx.outputs:
|
for txo in tx.outputs:
|
||||||
if txo.has_address:
|
if txo.is_pubkey_hash:
|
||||||
addresses.add(self.hash160_to_address(txo.pubkey_hash))
|
addresses.add(self.hash160_to_address(txo.pubkey_hash))
|
||||||
|
elif txo.is_script_hash:
|
||||||
|
addresses.add(self.hash160_to_script_address(txo.script_hash))
|
||||||
start = int(time.perf_counter())
|
start = int(time.perf_counter())
|
||||||
while timeout and (int(time.perf_counter()) - start) <= timeout:
|
while timeout and (int(time.perf_counter()) - start) <= timeout:
|
||||||
if await self._wait_round(tx, height, addresses):
|
if await self._wait_round(tx, height, addresses):
|
||||||
|
|
|
@ -272,22 +272,30 @@ class Output(InputOutput):
|
||||||
def id(self):
|
def id(self):
|
||||||
return self.ref.id
|
return self.ref.id
|
||||||
|
|
||||||
|
@property
|
||||||
|
def is_pubkey_hash(self):
|
||||||
|
return 'pubkey_hash' in self.script.values
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def pubkey_hash(self):
|
def pubkey_hash(self):
|
||||||
return self.script.values['pubkey_hash']
|
return self.script.values['pubkey_hash']
|
||||||
|
|
||||||
|
@property
|
||||||
|
def is_script_hash(self):
|
||||||
|
return 'script_hash' in self.script.values
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def script_hash(self):
|
def script_hash(self):
|
||||||
return self.script.values['script_hash']
|
return self.script.values['script_hash']
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def has_address(self):
|
def has_address(self):
|
||||||
return 'pubkey_hash' in self.script.values
|
return self.is_pubkey_hash or self.is_script_hash
|
||||||
|
|
||||||
def get_address(self, ledger):
|
def get_address(self, ledger):
|
||||||
if self.script.is_pay_pubkey_hash:
|
if self.is_pubkey_hash:
|
||||||
return ledger.hash160_to_address(self.pubkey_hash)
|
return ledger.hash160_to_address(self.pubkey_hash)
|
||||||
elif self.script.is_pay_script_hash:
|
elif self.is_script_hash:
|
||||||
return ledger.hash160_to_script_address(self.script_hash)
|
return ledger.hash160_to_script_address(self.script_hash)
|
||||||
|
|
||||||
def get_estimator(self, ledger):
|
def get_estimator(self, ledger):
|
||||||
|
|
|
@ -61,7 +61,8 @@ class WalletCommands(CommandTestCase):
|
||||||
self.assertEqual(await self.blockchain.get_balance(), '95.99973580')
|
self.assertEqual(await self.blockchain.get_balance(), '95.99973580')
|
||||||
await self.assertBalance(self.account, '10.0')
|
await self.assertBalance(self.account, '10.0')
|
||||||
p2sh_address1 = await self.blockchain.get_new_address(self.blockchain.P2SH_SEGWIT_ADDRESS)
|
p2sh_address1 = await self.blockchain.get_new_address(self.blockchain.P2SH_SEGWIT_ADDRESS)
|
||||||
await self.account_send('2.0', p2sh_address1)
|
tx = await self.account_send('2.0', p2sh_address1)
|
||||||
|
self.assertEqual(tx['outputs'][0]['address'], p2sh_address1)
|
||||||
self.assertEqual(await self.blockchain.get_balance(), '98.99973580') # +1 lbc for confirm block
|
self.assertEqual(await self.blockchain.get_balance(), '98.99973580') # +1 lbc for confirm block
|
||||||
await self.assertBalance(self.account, '7.999877')
|
await self.assertBalance(self.account, '7.999877')
|
||||||
await self.wallet_send('3.0', p2sh_address1)
|
await self.wallet_send('3.0', p2sh_address1)
|
||||||
|
|
|
@ -24,7 +24,7 @@ class TestExchangeRateManager(AsyncioTestCase):
|
||||||
self.assertLessEqual(len(failures), 1, f"feed failures: {failures}. Please check exchange rate feeds!")
|
self.assertLessEqual(len(failures), 1, f"feed failures: {failures}. Please check exchange rate feeds!")
|
||||||
lbc = manager.convert_currency('USD', 'LBC', Decimal('1.0'))
|
lbc = manager.convert_currency('USD', 'LBC', Decimal('1.0'))
|
||||||
self.assertGreaterEqual(lbc, 2.0)
|
self.assertGreaterEqual(lbc, 2.0)
|
||||||
self.assertLessEqual(lbc, 10.0)
|
self.assertLessEqual(lbc, 15.0)
|
||||||
lbc = manager.convert_currency('BTC', 'LBC', Decimal('0.01'))
|
lbc = manager.convert_currency('BTC', 'LBC', Decimal('0.01'))
|
||||||
self.assertGreaterEqual(lbc, 1_000)
|
self.assertGreaterEqual(lbc, 1_000)
|
||||||
self.assertLessEqual(lbc, 4_000)
|
self.assertLessEqual(lbc, 4_000)
|
||||||
|
|
Loading…
Reference in a new issue