mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-20 23:54:22 +01:00
pyln-client: to_whole_satoshi returns the rounded up satoshi value
A fractional satoshi value isn't really useful; rounding up loses precision but that's why you called "whole satoshi", wasn't it? Changelog-Changed: pyln-client: Millisatoshi has new method, `to_whole_satoshi`; *rounds value up* to the nearest whole satoshi
This commit is contained in:
committed by
Christian Decker
parent
cce0020568
commit
e3a1d1a7f3
@@ -92,6 +92,13 @@ class Millisatoshi:
|
|||||||
"""
|
"""
|
||||||
return Decimal(self.millisatoshis) / 1000
|
return Decimal(self.millisatoshis) / 1000
|
||||||
|
|
||||||
|
def to_whole_satoshi(self) -> int:
|
||||||
|
"""
|
||||||
|
Return an int respresenting the number of satoshis;
|
||||||
|
rounded up to the nearest satoshi
|
||||||
|
"""
|
||||||
|
return (self.millisatoshis + 999) // 1000
|
||||||
|
|
||||||
def to_btc(self) -> Decimal:
|
def to_btc(self) -> Decimal:
|
||||||
"""
|
"""
|
||||||
Return a Decimal representing the number of bitcoin.
|
Return a Decimal representing the number of bitcoin.
|
||||||
|
|||||||
@@ -84,12 +84,12 @@ def on_openchannel(openchannel2, plugin, **kwargs):
|
|||||||
psbt_obj = psbt_from_base64(funding['psbt'])
|
psbt_obj = psbt_from_base64(funding['psbt'])
|
||||||
|
|
||||||
excess = Millisatoshi(funding['excess_msat'])
|
excess = Millisatoshi(funding['excess_msat'])
|
||||||
change_cost = Millisatoshi(124 * feerate // 1000 * 1000)
|
change_cost = Millisatoshi(124 * feerate)
|
||||||
dust_limit = Millisatoshi(253 * 1000)
|
dust_limit = Millisatoshi(253 * 1000)
|
||||||
if excess > (dust_limit + change_cost):
|
if excess > (dust_limit + change_cost):
|
||||||
addr = plugin.rpc.newaddr()['bech32']
|
addr = plugin.rpc.newaddr()['bech32']
|
||||||
change = excess - change_cost
|
change = excess - change_cost
|
||||||
output = tx_output_init(int(change.to_satoshi()), get_script(addr))
|
output = tx_output_init(change.to_whole_satoshi(), get_script(addr))
|
||||||
psbt_add_output_at(psbt_obj, 0, 0, output)
|
psbt_add_output_at(psbt_obj, 0, 0, output)
|
||||||
|
|
||||||
return {'result': 'continue', 'psbt': psbt_to_base64(psbt_obj, 0),
|
return {'result': 'continue', 'psbt': psbt_to_base64(psbt_obj, 0),
|
||||||
|
|||||||
Reference in New Issue
Block a user