mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-02-22 14:42:40 +01:00
df-tests: add setacceptmaxfunding
to df_accepter plugin
Method for setting a ceiling on the fund matching capabilities of df_accepter. Setting it to zero means we don't fund the channel anymore.
This commit is contained in:
parent
ea1895fc1e
commit
f822a93cf4
1 changed files with 29 additions and 3 deletions
|
@ -85,12 +85,34 @@ def find_inputs(b64_psbt):
|
|||
return input_idxs
|
||||
|
||||
|
||||
@plugin.init()
|
||||
def init(configuration, options, plugin):
|
||||
# this is the max channel size, pre-wumbo
|
||||
plugin.max_fund = Millisatoshi((2 ** 24 - 1) * 1000)
|
||||
plugin.log('max funding set to {}'.format(plugin.max_fund))
|
||||
|
||||
|
||||
@plugin.method("setacceptfundingmax")
|
||||
def set_accept_funding_max(plugin, max_sats, **kwargs):
|
||||
plugin.max_fund = Millisatoshi(max_sats)
|
||||
|
||||
return {'accepter_max_funding': plugin.max_fund}
|
||||
|
||||
|
||||
@plugin.hook('openchannel2')
|
||||
def on_openchannel(openchannel2, plugin, **kwargs):
|
||||
# We mirror what the peer does, wrt to funding amount ...
|
||||
amount = openchannel2['their_funding']
|
||||
amount = Millisatoshi(openchannel2['their_funding'])
|
||||
locktime = openchannel2['locktime']
|
||||
|
||||
if amount > plugin.max_fund:
|
||||
plugin.log("amount adjusted from {} to {}".format(amount, plugin.max_fund))
|
||||
amount = plugin.max_fund
|
||||
|
||||
if amount == 0:
|
||||
plugin.log("accepter_max_funding set to zero")
|
||||
return {'result': 'continue'}
|
||||
|
||||
# ...unless they send us totally unacceptable feerates.
|
||||
feerate = find_feerate(openchannel2['funding_feerate_best'],
|
||||
openchannel2['funding_feerate_min'],
|
||||
|
@ -101,12 +123,15 @@ def on_openchannel(openchannel2, plugin, **kwargs):
|
|||
# Their feerate range is out of bounds, we're not going to
|
||||
# participate.
|
||||
if not feerate:
|
||||
plugin.log("Declining to fund, no feerate found.")
|
||||
return {'result': 'continue'}
|
||||
|
||||
funding = plugin.rpc.fundpsbt(amount,
|
||||
funding = plugin.rpc.fundpsbt(int(amount.to_satoshi()),
|
||||
'{}perkw'.format(feerate),
|
||||
0, reserve=True,
|
||||
0, # because we're the accepter!!
|
||||
reserve=True,
|
||||
locktime=locktime,
|
||||
minconf=0,
|
||||
min_witness_weight=110)
|
||||
psbt_obj = psbt_from_base64(funding['psbt'])
|
||||
|
||||
|
@ -119,6 +144,7 @@ def on_openchannel(openchannel2, plugin, **kwargs):
|
|||
output = tx_output_init(change.to_whole_satoshi(), get_script(addr))
|
||||
psbt_add_output_at(psbt_obj, 0, 0, output)
|
||||
|
||||
plugin.log("contributing {} at feerate {}".format(amount, feerate))
|
||||
return {'result': 'continue', 'psbt': psbt_to_base64(psbt_obj, 0),
|
||||
'accepter_funding_msat': amount,
|
||||
'funding_feerate': feerate}
|
||||
|
|
Loading…
Add table
Reference in a new issue