core-lightning/tests/plugins/hook-chain-odd.py
Christian Decker 490550d508 plugin: Allow multiple plugins to register the htlc_accepted hook
Make the `htlc_accepted` hook the first chained hook in our repertoire. The
plugins are called one after the other in order until we have no more plugins
or the HTLC was handled by one of the plugins. If no plugins handles the HTLC
we continue to handle it internally like always.

Handling in this case means the plugin returns either `{"result": "resolve",
...}` or `{"result": "fail", ...}`.

Changelog-Changed: plugin: Multiple plugins can now register for the htlc_accepted hook.
2020-02-11 15:57:22 +10:30

25 lines
654 B
Python
Executable File

#!/usr/bin/env python3
from pyln.client import Plugin
from hashlib import sha256
from binascii import hexlify
"""A simple plugin that accepts invoices with "AA"*32 preimages
"""
plugin = Plugin()
@plugin.hook('htlc_accepted')
def on_htlc_accepted(htlc, plugin, **kwargs):
preimage = b"\xAA" * 32
payment_hash = sha256(preimage).hexdigest()
preimage = hexlify(preimage).decode('ASCII')
print("htlc_accepted called for payment_hash {}".format(htlc['payment_hash']))
if htlc['payment_hash'] == payment_hash:
return {'result': 'resolve', 'payment_key': preimage}
else:
return {'result': 'continue'}
plugin.run()