You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.1 KiB
41 lines
1.1 KiB
#!/usr/bin/env python3
|
|
"""Simple plugin to test the openchannel_hook.
|
|
|
|
We just refuse to let them open channels with an odd amount of millisatoshis.
|
|
"""
|
|
|
|
from pyln.client import Plugin, Millisatoshi
|
|
from pyln.testing.utils import env
|
|
|
|
plugin = Plugin()
|
|
|
|
|
|
EXPERIMENTAL_FEATURES = env("EXPERIMENTAL_FEATURES", "0") == "1"
|
|
|
|
|
|
def run_check(funding_amt_str):
|
|
if Millisatoshi(funding_amt_str).to_satoshi() % 2 == 1:
|
|
return {'result': 'reject', 'error_message': "I don't like odd amounts"}
|
|
|
|
return {'result': 'continue'}
|
|
|
|
|
|
@plugin.hook('openchannel')
|
|
def on_openchannel(openchannel, plugin, **kwargs):
|
|
print("{} VARS".format(len(openchannel.keys())))
|
|
for k in sorted(openchannel.keys()):
|
|
print("{}={}".format(k, openchannel[k]))
|
|
return run_check(openchannel['funding_satoshis'])
|
|
|
|
|
|
if EXPERIMENTAL_FEATURES:
|
|
@plugin.hook('openchannel2')
|
|
def on_openchannel2(openchannel2, plugin, **kwargs):
|
|
print("{} VARS".format(len(openchannel2.keys())))
|
|
for k in sorted(openchannel2.keys()):
|
|
print("{}={}".format(k, openchannel2[k]))
|
|
|
|
return run_check(openchannel2['their_funding'])
|
|
|
|
|
|
plugin.run()
|
|
|