ln: don't make invoice if peer can't possibly pay, append _sat to sat
parameters to avoid confusion
This commit is contained in:
@@ -765,8 +765,8 @@ class Commands:
|
||||
|
||||
# lightning network commands
|
||||
@command('wpn')
|
||||
def open_channel(self, node_id, amount, push_msat=0, password=None):
|
||||
self.wallet.lnworker.open_channel(node_id, satoshis(amount), push_msat, password)
|
||||
def open_channel(self, node_id, amount, channel_push=0, password=None):
|
||||
self.wallet.lnworker.open_channel(node_id, satoshis(amount), satoshis(channel_push), password)
|
||||
|
||||
@command('wn')
|
||||
def reestablish_channel(self):
|
||||
@@ -777,8 +777,9 @@ class Commands:
|
||||
self.wallet.lnworker.pay(invoice)
|
||||
|
||||
@command('wn')
|
||||
def addinvoice(self, amount, message):
|
||||
return self.wallet.lnworker.add_invoice(satoshis(amount), message)
|
||||
def addinvoice(self, requested_amount, message):
|
||||
# using requested_amount because it is documented in param_descriptions
|
||||
return self.wallet.lnworker.add_invoice(satoshis(requested_amount), message)
|
||||
|
||||
@command('wn')
|
||||
def listchannels(self):
|
||||
@@ -841,7 +842,7 @@ command_options = {
|
||||
'timeout': (None, "Timeout in seconds"),
|
||||
'force': (None, "Create new address beyond gap limit, if no more addresses are available."),
|
||||
'pending': (None, "Show only pending requests."),
|
||||
'push_msat': (None, 'push millisatoshis'),
|
||||
'channel_push':(None, 'Push initial amount (in BTC)'),
|
||||
'expired': (None, "Show only expired requests."),
|
||||
'paid': (None, "Show only paid requests."),
|
||||
'show_addresses': (None, "Show input and output addresses"),
|
||||
|
||||
@@ -171,14 +171,14 @@ class LNWorker(PrintError):
|
||||
self.channel_state[chan.channel_id] = "OPEN"
|
||||
|
||||
# not aiosafe because we call .result() which will propagate an exception
|
||||
async def _open_channel_coroutine(self, node_id, amount, push_msat, password):
|
||||
async def _open_channel_coroutine(self, node_id, amount_sat, push_sat, password):
|
||||
peer = self.peers[bfh(node_id)]
|
||||
openingchannel = await peer.channel_establishment_flow(self.wallet, self.config, password, amount, push_msat, temp_channel_id=os.urandom(32))
|
||||
openingchannel = await peer.channel_establishment_flow(self.wallet, self.config, password, amount_sat, push_sat * 1000, temp_channel_id=os.urandom(32))
|
||||
self.print_error("SAVING OPENING CHANNEL")
|
||||
self.save_channel(openingchannel)
|
||||
|
||||
def open_channel(self, node_id, local_amt, push_amt, pw):
|
||||
coro = self._open_channel_coroutine(node_id, local_amt, push_amt, None if pw == "" else pw)
|
||||
def open_channel(self, node_id, local_amt_sat, push_amt_sat, pw):
|
||||
coro = self._open_channel_coroutine(node_id, local_amt_sat, push_amt_sat, None if pw == "" else pw)
|
||||
return asyncio.run_coroutine_threadsafe(coro, self.network.asyncio_loop).result()
|
||||
|
||||
def pay(self, invoice):
|
||||
@@ -196,10 +196,14 @@ class LNWorker(PrintError):
|
||||
openchannel = await peer.pay(self.wallet, openchannel, msat_amt, payment_hash, pubkey, addr.min_final_cltv_expiry)
|
||||
self.save_channel(openchannel)
|
||||
|
||||
def add_invoice(self, amount, message='one cup of coffee'):
|
||||
def add_invoice(self, amount_sat, message='one cup of coffee'):
|
||||
is_open = lambda chan: self.channel_state[chan] == "OPEN"
|
||||
# TODO doesn't account for fees!!!
|
||||
if not any(openchannel.remote_state.amount_msat >= amount_sat * 1000 for openchannel in self.channels if is_open(chan)):
|
||||
return "Not making invoice, no channel has enough balance"
|
||||
payment_preimage = os.urandom(32)
|
||||
RHASH = sha256(payment_preimage)
|
||||
pay_req = lnencode(LnAddr(RHASH, amount/Decimal(COIN), tags=[('d', message)]), self.privkey)
|
||||
pay_req = lnencode(LnAddr(RHASH, amount_sat/Decimal(COIN), tags=[('d', message)]), self.privkey)
|
||||
decoded = lndecode(pay_req, expected_hrp=constants.net.SEGWIT_HRP)
|
||||
assert decoded.pubkey.serialize() == privkey_to_pubkey(self.privkey)
|
||||
self.invoices[bh2u(payment_preimage)] = pay_req
|
||||
|
||||
Reference in New Issue
Block a user