Skip to content

Commit

Permalink
lnworker, lnpeer: add OnionMessageManager to LNWallet, add on_onion_m…
Browse files Browse the repository at this point in the history
…essage handler

to lnpeer and dispatch to OnionMessageManager
  • Loading branch information
accumulator committed May 15, 2024
1 parent b22ece9 commit caaad64
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 3 deletions.
10 changes: 7 additions & 3 deletions electrum/lnpeer.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
from aiorpcx import ignore_after

from .crypto import sha256, sha256d
from . import bitcoin, util
from . import bitcoin, util, onion_message
from . import ecc
from .ecc import ecdsa_sig64_from_r_and_s, ecdsa_der_sig_from_ecdsa_sig64, ECPubkey
from . import constants
Expand All @@ -28,8 +28,8 @@
from .transaction import PartialTxOutput, match_script_against_template, Sighash
from .logging import Logger
from .lnrouter import RouteEdge
from .lnonion import (new_onion_packet, OnionFailureCode, calc_hops_data_for_payment,
process_onion_packet, OnionPacket, construct_onion_error, obfuscate_onion_error, OnionRoutingFailure,
from .lnonion import (new_onion_packet, OnionFailureCode, calc_hops_data_for_payment, process_onion_packet,
OnionPacket, construct_onion_error, obfuscate_onion_error, OnionRoutingFailure,
ProcessedOnionPacket, UnsupportedOnionPacketVersion, InvalidOnionMac, InvalidOnionPubkey,
OnionFailureCodeMetaFlag)
from .lnchannel import Channel, RevokeAndAck, RemoteCtnTooFarInFuture, ChannelState, PeerState, ChanCloseOption, CF_ANNOUNCE_CHANNEL
Expand Down Expand Up @@ -2781,3 +2781,7 @@ def process_onion_packet(
if self.network.config.TEST_FAIL_HTLCS_WITH_TEMP_NODE_FAILURE:
raise OnionRoutingFailure(code=OnionFailureCode.TEMPORARY_NODE_FAILURE, data=b'')
return processed_onion

def on_onion_message(self, payload):
if getattr(self.lnworker, 'onion_message_manager'): # only on LNWallet
self.lnworker.onion_message_manager.on_onion_message(payload)
5 changes: 5 additions & 0 deletions electrum/lnworker.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@

from . import constants, util
from . import keystore
from .onion_message import create_reply_path, OnionMessageManager
from .util import profiler, chunks, OldTaskGroup
from .invoices import Invoice, PR_UNPAID, PR_EXPIRED, PR_PAID, PR_INFLIGHT, PR_FAILED, PR_ROUTING, LN_EXPIRY_NEVER
from .invoices import BaseInvoice
Expand Down Expand Up @@ -858,6 +859,7 @@ def __init__(self, wallet: 'Abstract_Wallet', xprv):
self.payment_bundles = [] # lists of hashes. todo:persist
self.swap_manager = SwapManager(wallet=self.wallet, lnworker=self)

self.onion_message_manager = OnionMessageManager(self)

def has_deterministic_node_id(self) -> bool:
return bool(self.db.get('lightning_xprv'))
Expand Down Expand Up @@ -946,6 +948,7 @@ def start_network(self, network: 'Network'):
self.lnwatcher = LNWalletWatcher(self, network)
self.swap_manager.start_network(network=network, lnwatcher=self.lnwatcher)
self.lnrater = LNRater(self, network)
self.onion_message_manager.start_network(network=network)

for chan in self.channels.values():
if chan.need_to_subscribe():
Expand Down Expand Up @@ -976,6 +979,8 @@ async def stop(self):
self.lnwatcher = None
if self.swap_manager: # may not be present in tests
await self.swap_manager.stop()
if self.onion_message_manager:
await self.onion_message_manager.stop()

async def wait_for_received_pending_htlcs_to_get_removed(self):
assert self.stopping_soon is True
Expand Down

0 comments on commit caaad64

Please sign in to comment.