prevent creation of change which is below the dust threshold of 1000 dewies
This commit is contained in:
parent
72beb02ec1
commit
e00dc78e1f
3 changed files with 15 additions and 2 deletions
|
@ -2,6 +2,7 @@ NULL_HASH32 = b'\x00'*32
|
||||||
|
|
||||||
CENT = 1000000
|
CENT = 1000000
|
||||||
COIN = 100*CENT
|
COIN = 100*CENT
|
||||||
|
DUST = 1000
|
||||||
|
|
||||||
TIMEOUT = 30.0
|
TIMEOUT = 30.0
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@ from lbry.schema.purchase import Purchase
|
||||||
from lbry.schema.support import Support
|
from lbry.schema.support import Support
|
||||||
|
|
||||||
from .script import InputScript, OutputScript
|
from .script import InputScript, OutputScript
|
||||||
from .constants import COIN, NULL_HASH32
|
from .constants import COIN, DUST, NULL_HASH32
|
||||||
from .bcd_data_stream import BCDataStream
|
from .bcd_data_stream import BCDataStream
|
||||||
from .hash import TXRef, TXRefImmutable
|
from .hash import TXRef, TXRefImmutable
|
||||||
from .util import ReadOnlyList
|
from .util import ReadOnlyList
|
||||||
|
@ -838,7 +838,7 @@ class Transaction:
|
||||||
)
|
)
|
||||||
if payment > cost:
|
if payment > cost:
|
||||||
change = payment - cost
|
change = payment - cost
|
||||||
if change > cost_of_change:
|
if change > cost_of_change and change > DUST:
|
||||||
change_address = await change_account.change.get_or_create_usable_address()
|
change_address = await change_account.change.get_or_create_usable_address()
|
||||||
change_hash160 = change_account.ledger.address_to_hash160(change_address)
|
change_hash160 = change_account.ledger.address_to_hash160(change_address)
|
||||||
change_amount = change - cost_of_change
|
change_amount = change - cost_of_change
|
||||||
|
|
|
@ -3,6 +3,18 @@ from lbry.testcase import CommandTestCase
|
||||||
|
|
||||||
class TransactionCommandsTestCase(CommandTestCase):
|
class TransactionCommandsTestCase(CommandTestCase):
|
||||||
|
|
||||||
|
async def test_txo_dust_prevention(self):
|
||||||
|
address = await self.daemon.jsonrpc_address_unused(self.account.id)
|
||||||
|
tx = await self.account_send('9.9998758', address)
|
||||||
|
# dust prevention threshold not reached, small txo created
|
||||||
|
self.assertEqual(2, len(tx['outputs']))
|
||||||
|
self.assertEqual(tx['outputs'][1]['amount'], '0.0000002')
|
||||||
|
tx = await self.account_send('8.9998759', address)
|
||||||
|
# prior to dust prevention this produced a '0.0000001' change txo
|
||||||
|
# dust prevention prevented dust
|
||||||
|
self.assertEqual(1, len(tx['outputs']))
|
||||||
|
self.assertEqual(tx['outputs'][0]['amount'], '8.9998759')
|
||||||
|
|
||||||
async def test_transaction_show(self):
|
async def test_transaction_show(self):
|
||||||
# local tx
|
# local tx
|
||||||
result = await self.out(self.daemon.jsonrpc_account_send(
|
result = await self.out(self.daemon.jsonrpc_account_send(
|
||||||
|
|
Loading…
Add table
Reference in a new issue