UNPKG

lightning

Version:
396 lines (376 loc) 25.4 kB
# Lightning [![npm version](https://badge.fury.io/js/lightning.svg)](https://badge.fury.io/js/lightning) Methods for working with the Lightning Network ## Selected Projects using Lightning - [bitpay.com crypto-rpc](https://bitpay.com/) - https://github.com/bitpay/crypto-rpc - [channel.ninja](https://channel.ninja/) - https://github.com/channelninja/channel.ninja - [coinos.io](https://coinos.io/) - https://github.com/coinos/coinos-server - [Galoy](https://galoy.io/) - https://github.com/GaloyMoney/galoy - [Lightning Poker](https://lightning-poker.com/) - https://github.com/igreshev/lightning-poker - [Lightning Roulette](https://lightning-roulette.com/) - https://github.com/igreshev/lightning-roulette - [Lightning Shell](https://lightningshell.app/) - https://github.com/ibz/lightning-shell - [LNMarkets](https://twitter.com/lnmarkets) - https://github.com/lnmarkets/umbrel - [LNPingBot](https://github.com/swissrouting/lnpingbot) - https://github.com/swissrouting/lnpingbot - [MutinyWallet faucet](https://github.com/MutinyWallet/mutinynet-faucet) - https://www.mutinywallet.com/ - [p2plnbot](https://telegram.me/lnp2pbot) - https://github.com/grunch/p2plnbot - [rekr](https://rekr.app/) - https://github.com/ryan-lingle/rekr - [stackernews](https://stacker.news/) - https://github.com/stackernews/stacker.news - [Suredbits API](https://suredbits.com/) - https://github.com/Suredbits/sb-api-lnd - [Synonym Blocktank server](https://synonym.to) - https://github.com/synonymdev/blocktank-server/ - [Tarnhelm](https://www.tarnhelm.app/) - https://github.com/bkiac/tarnhelm - [tbtcswaps](https://tbtcswaps.com/) - https://github.com/keep-community/tbtcswaps - [Thunderhub](https://www.thunderhub.io/) - https://github.com/apotdevin/thunderhub ## LND Authentication To connect to an LND node, authentication details are required. Export credentials via CLI: [balanceofsatoshis](https://github.com/alexbosworth/balanceofsatoshis): `npm install -g balanceofsatoshis` and export via `bos credentials --cleartext` Or export them manually: Run `base64` on the tls.cert and admin.macaroon files to get the encoded authentication data to create the LND connection. You can find these files in the LND directory. (~/.lnd or ~/Library/Application Support/Lnd) base64 -w0 ~/.lnd/tls.cert base64 -w0 ~/.lnd/data/chain/bitcoin/mainnet/admin.macaroon You can then use these to interact with your LND node directly: ```node const {authenticatedLndGrpc} = require('lightning'); const {lnd} = authenticatedLndGrpc({ cert: 'base64 encoded tls.cert file', macaroon: 'base64 encoded admin.macaroon file', socket: '127.0.0.1:10009', }); ``` To access unauthenticated methods like the wallet unlocker, use `unauthenticatedLndGrpc` instead. ## Debugging If you encounter any issues connecting and wish to view detailed information about the underlying grpc calls, you can run Node with these environment variables set: GRPC_VERBOSITY=DEBUG GRPC_TRACE=all node YOURSCRIPTNAME.js ## Methods - [addAdvertisedFeature](https://github.com/alexbosworth/ln-service#addadvertisedfeature): Add a new supported feature to the graph node announcement - [addExternalSocket](https://github.com/alexbosworth/ln-service#addexternalsocket): Add a new LN p2p network socket to node advertisement - [addPeer](https://github.com/alexbosworth/ln-service#addpeer): Connect to a new peer - [authenticatedLndGrpc](https://github.com/alexbosworth/ln-service#authenticatedlndgrpc): Instantiate connection to authenticated lnd methods. - [beginGroupSigningSession](https://github.com/alexbosworth/ln-service#begingroupsigningsession): Start a new MuSig2 signing session - [broadcastChainTransaction](https://github.com/alexbosworth/ln-service#broadcastchaintransaction): Publish an on-chain transaction to the network. - [cancelHodlInvoice](https://github.com/alexbosworth/ln-service#cancelhodlinvoice): Cancel an open invoice. - [cancelPendingChannel](https://github.com/alexbosworth/ln-service#cancelpendingchannel): Cancel a pending channel. - [closeChannel](https://github.com/alexbosworth/ln-service#closechannel): Close a channel out to the chain. - [changePassword](https://github.com/alexbosworth/ln-service#changepassword): Update the wallet encryption passphrase. - [connectWatchtower](https://github.com/alexbosworth/ln-service#connectwatchtower): Connect a new watchtower. - [createChainAddress](https://github.com/alexbosworth/ln-service#createchainaddress): Generate a chain address to receive on-chain funds. - [createFundedPsbt](https://github.com/alexbosworth/ln-service#createfundedpsbt): Create a funded PSBT given inputs and outputs - [createHodlInvoice](https://github.com/alexbosworth/ln-service#createhodlinvoice): Make a new off-chain invoice that will not automatically accept payment. - [createInvoice](https://github.com/alexbosworth/ln-service#createinvoice): Make a new off-chain invoice. - [createSeed](https://github.com/alexbosworth/ln-service#createseed): Generate a random wallet HD seed. - [createWallet](https://github.com/alexbosworth/ln-service#createwallet): Make a new wallet. - [decodePaymentRequest](https://github.com/alexbosworth/ln-service#decodepaymentrequest): Get parsed details for a payment request. - [deleteChainTransaction](https://github.com/alexbosworth/ln-service#deletechaintransaction) Delete a broadcast chain transaction - [deleteFailedPayAttempts](https://github.com/alexbosworth/ln-service#deletefailedpayattempts) Remove failed payment paths from database. - [deleteFailedPayments](https://github.com/alexbosworth/ln-service#deletefailedpayments) Remove failed payments from the database. - [deleteForwardingReputations](https://github.com/alexbosworth/ln-service#deleteforwardingreputations) Clear pathfinding reputations of routing nodes and channels. - [deletePayment](https://github.com/alexbosworth/ln-service#deletepayment): Remove a past payment record. - [deletePayments](https://github.com/alexbosworth/ln-service#deletepayments): Remove all past payment records. - [diffieHellmanComputeSecret](https://github.com/alexbosworth/ln-service#diffiehellmancomputesecret): Calculate a shared secret to enable symmetric encryption of data to another node. - [disableChannel](https://github.com/alexbosworth/ln-service#disablechannel): Signal disabled forwarding to a peer - [disconnectWatchtower](https://github.com/alexbosworth/ln-service#disconnectwatchtower): Remove a connected watchtower - [enableChannel](https://github.com/alexbosworth/ln-service#enablechannel): Signal forwarding enabled towards a peer. - [endGroupSigningSession](https://github.com/alexbosworth/ln-service#endgroupsigningsession): End a MuSig2 signing session - [fundPendingChannels](https://github.com/alexbosworth/ln-service#fundpendingchannels): Provide a signed funding source for opening channels. - [fundPsbt](https://github.com/alexbosworth/ln-service#fundpsbt): Make a PSBT with funds and change to setup a future on-chain spend. - [getAccessIds](https://github.com/alexbosworth/ln-service#getaccessids): List the access tokens granted permission to access the node. - [getAutopilot](https://github.com/alexbosworth/ln-service#getautopilot): Retrieve channel open autopilot configuration. - [getBackup](https://github.com/alexbosworth/ln-service#getbackup): Get recovery details for a specific channel. - [getBackups](https://github.com/alexbosworth/ln-service#getbackups): Get recovery details for all channels. - [getBlock](https://github.com/alexbosworth/ln-service#getblock): Get a block - [getBlockHeader](https://github.com/alexbosworth/ln-service#getblockheader): Get a block header - [getChainAddresses](https://github.com/alexbosworth/ln-service#getchainaddresses): Get a list of created chain addresses - [getChainBalance](https://github.com/alexbosworth/ln-service#getchainbalance): Get the amount of on-chain funds. - [getChainFeeEstimate](https://github.com/alexbosworth/ln-service#getchainfeeestimate): Estimate a chain fee to send funds to an address. - [getChainFeeRate](https://github.com/alexbosworth/ln-service#getchainfeerate): Get an estimate for an on-chain fee rate. - [getChainTransaction](https://github.com/alexbosworth/ln-service#getchaintransaction): Get a wallet on-chain transaction. - [getChainTransactions](https://github.com/alexbosworth/ln-service#getchaintransactions): List past on-chain transactions. - [getChannel](https://github.com/alexbosworth/ln-service#getchannel): Lookup network graph details about a channel. - [getChannelBalance](https://github.com/alexbosworth/ln-service#getchannelbalance): Calculate the total off-chain balance on the node. - [getChannels](https://github.com/alexbosworth/ln-service#getchannels): List open channels on the node. - [getClosedChannels](https://github.com/alexbosworth/ln-service#getclosedchannels): List closed channels on the node. - [getConfiguration](https://github.com/alexbosworth/ln-service#getconfiguration): Get the configuration file settings for the node and the log. - [getConnectedWatchtowers](https://github.com/alexbosworth/ln-service#getconnectedwatchtowers): List watchtowers that were added - [getEphemeralChannelIds](https://github.com/alexbosworth/ln-service#getephemeralchannelids): List other channel ids for channels - [getFailedPayments](https://github.com/alexbosworth/ln-service#getfailedpayments): List out past payments that failed. - [getFeeRates](https://github.com/alexbosworth/ln-service#getfeerates): List routing fee rates and routing policies of channels on the node. - [getForwardingConfidence](https://github.com/alexbosworth/ln-service#getforwardingconfidence): Calculate the pathfinding confidence score for routing a payment. - [getForwardingReputations](https://github.com/alexbosworth/ln-service#getforwardingreputations): List the pathfinding reputations for payment routing. - [getForwards](https://github.com/alexbosworth/ln-service#getforwards): List past forwards routed through the node. - [getHeight](https://github.com/alexbosworth/ln-service#getheight): Lookup the current best chain height. - [getIdentity](https://github.com/alexbosworth/ln-service#getidentity): Derive the identity public key of the node. - [getInvoice](https://github.com/alexbosworth/ln-service#getinvoice): Lookup the status of an invoice. - [getInvoices](https://github.com/alexbosworth/ln-service#getinvoices): List details of all past open invoices and received payments. - [getLockedUtxos](https://github.com/alexbosworth/ln-service#getlockedutxos): List the UTXOs that are currently reserved and unavailable to coin selection. - [getMasterPublicKeys](https://github.com/alexbosworth/ln-service#getmasterpublickeys): List out master seed derived extended public keys and derivation paths. - [getMethods](https://github.com/alexbosworth/ln-service#getmethods): List RPC methods and permissions required to use them. - [getMinimumRelayFee](https://github.com/alexbosworth/ln-service#getminimumrelayfee): Get the minimum relayable fee for publishing a chain transaction - [getNetworkCentrality](https://github.com/alexbosworth/ln-service#getnetworkcentrality): Calculate the graph centrality score of a node. - [getNetworkGraph](https://github.com/alexbosworth/ln-service#getnetworkgraph): List all graph routing nodes and all channels. - [getNetworkInfo](https://github.com/alexbosworth/ln-service#getnetworkinfo): Calculate network graph statistics. - [getNode](https://github.com/alexbosworth/ln-service#getnode): Retrieve graph details for a node and optionally list its channels. - [getPathfindingSettings](https://github.com/alexbosworth/ln-service#getpathfindingsettings): List out configuration options set for routing. - [getPayment](https://github.com/alexbosworth/ln-service#getpayment): Lookup details about a past payment. - [getPayments](https://github.com/alexbosworth/ln-service#getpayments): List details about past payment attempts and paid payment requests. - [getPeers](https://github.com/alexbosworth/ln-service#getpeers): List details of connected nodes. - [getPendingChainBalance](https://github.com/alexbosworth/ln-service#getpendingchainbalance): Calculate the unconfirmed on-chain balance. - [getPendingChannels](https://github.com/alexbosworth/ln-service#getpendingchannels): List details of opening or closing channels. - [getPendingPayments](https://github.com/alexbosworth/ln-service#getpendingpayments): List out past pending payments. - [getPendingSweeps](https://github.com/alexbosworth/ln-service#getpendingsweeps): List out queued outpoints that are being swept - [getPublicKey](https://github.com/alexbosworth/ln-service#getpublickey): Derive a public key at a given index. - [getRouteConfidence](https://github.com/alexbosworth/ln-service#getrouteconfidence): Check a route to see the pathfinding confidence score that a payment would succeed. - [getRouteThroughHops](https://github.com/alexbosworth/ln-service#getroutethroughhops): Calculate a route through specified nodes. - [getRouteToDestination](https://github.com/alexbosworth/ln-service#getroutetodestination): Calculate a route through the graph to a destination. - [getRoutingFeeEstimate](https://github.com/alexbosworth/ln-service#getroutingfeeestimate): Make a test payment to find a working routing fee for a payment request - [getSettlementStatus](https://github.com/alexbosworth/ln-service#getsettlementstatus): Lookup the status of a received payment output - [getSweepTransactions](https://github.com/alexbosworth/ln-service#getsweeptransactions): List transactions that are sweeping funds on-chain. - [getTowerServerInfo](https://github.com/alexbosworth/ln-service#gettowerserverinfo): General information about a watchtower server running. - [getUtxos](https://github.com/alexbosworth/ln-service#getutxos): List unspent transaction outputs in the on-chain wallet. - [getWalletInfo](https://github.com/alexbosworth/ln-service#getwalletinfo): Lookup general details about the node. - [getWalletStatus](https://github.com/alexbosworth/ln-service#getwalletstatus): Fetch the current state of the wallet. - [getWalletVersion](https://github.com/alexbosworth/ln-service#getwalletversion): Retrieve the version and build tags of the node. - [grantAccess](https://github.com/alexbosworth/ln-service#grantaccess): Create an access credential macaroon to access the API. - [isDestinationPayable](https://github.com/alexbosworth/ln-service#isdestinationpayable): Check if a destination can be paid - [lockUtxo](https://github.com/alexbosworth/ln-service#lockutxo): Lease a UTXO so it cannot be chosen to be spent. - [openChannel](https://github.com/alexbosworth/ln-service#openchannel): Create a new channel to another node. - [openChannels](https://github.com/alexbosworth/ln-service#openchannels): Open multiple channels in a single on-chain transaction batch. - [partiallySignPsbt](https://github.com/alexbosworth/ln-service#partiallysignpsbt): Add a partial signature to a PSBT - [pay](https://github.com/alexbosworth/ln-service#pay): Make an off-chain payment. - [payViaPaymentDetails](https://github.com/alexbosworth/ln-service#payviapaymentdetails): Pay off-chain using details about a destination invoice. - [payViaPaymentRequest](https://github.com/alexbosworth/ln-service#payviapaymentrequest): Pay a payment request off-chain. - [payViaRoutes](https://github.com/alexbosworth/ln-service#payviaroutes): Pay to a destination using a specified route or routes. - [prepareForChannelProposal](https://github.com/alexbosworth/ln-service#prepareforchannelproposal): Prepare to receive a custom channel proposal. - [probeForRoute](https://github.com/alexbosworth/ln-service#probeforroute): Run a probe to find a route to pay to a destination. - [proposeChannel](https://github.com/alexbosworth/ln-service#proposechannel): Propose a new channel to a peer who has prepared for the channel proposal. - [recoverFundsFromChannel](https://github.com/alexbosworth/ln-service#recoverfundsfromchannel): Attempt to recover channel funds from a specific channel backup. - [recoverFundsFromChannels](https://github.com/alexbosworth/ln-service#recoverfundsfromchannels): Attempt to recover funds from multiple channels using a multiple channel backup. - [removeAdvertisedFeature](https://github.com/alexbosworth/ln-service#removeadvertisedfeature): Remove a supported feature from the graph node announcement - [removeExternalSocket](https://github.com/alexbosworth/ln-service#removeexternalsocket): Remove a LN p2p network socket from the node advertisement - [removePeer](https://github.com/alexbosworth/ln-service#removepeer): Disconnect from a connected peer. - [requestBatchedFeeIncrease](https://github.com/alexbosworth/ln-service#requestbatchedfeeincrease): Ask for a batched CPFP chain fee rate increase on a pending confirm UTXO - [requestChainFeeIncrease](https://github.com/alexbosworth/ln-service#requestchainfeeincrease): Ask for a CPFP chain fee rate increase on a pending confirm UTXO. - [revokeAccess](https://github.com/alexbosworth/ln-service#revokeaccess): Remove the access privileges of a previously issued access token macaroon credential. - [sendMessageToPeer](https://github.com/alexbosworth/ln-service#sendmessagetopeer): Send message to a connected peer. - [sendToChainAddress](https://github.com/alexbosworth/ln-service#sendtochainaddress): Send funds on-chain to an address. - [sendToChainAddresses](https://github.com/alexbosworth/ln-service#sendtochainaddresses): Send funds on-chain to multiple chain addresses. - [sendToChainOutputScripts](https://github.com/alexbosworth/ln-service#sendtochainoutputscripts): Send funds on-chain to multiple chain destinations, specifying outputs scripts, not addresses. - [setAutopilot](https://github.com/alexbosworth/ln-service#setautopilot): Set the open channel autopilot configuration settings. - [settleHodlInvoice](https://github.com/alexbosworth/ln-service#settlehodlinvoice): Take incoming off-chain funds when an invoice has held funds from an incoming payment. - [signBytes](https://github.com/alexbosworth/ln-service#signbytes): Use node keys to sign over an arbitrary set of bytes. - [signChainAddressMessage](https://github.com/alexbosworth/ln-service#signchainaddressmessage): Sign a message using the public key behind a chain address with ECDSA - [signMessage](https://github.com/alexbosworth/ln-service#signmessage): Use the node identity key to generate a signed message that represents the public graph node identity. - [signPsbt](https://github.com/alexbosworth/ln-service#signpsbt): Sign inputs and finalize a partially signed transaction in the PSBT format to prepare it for broadcast. - [signTransaction](https://github.com/alexbosworth/ln-service#signtransaction): Generate signatures required for inputs on a transaction. - [stopDaemon](https://github.com/alexbosworth/ln-service#stopdaemon): Send a shutdown request to cleanly kill the daemon. - [subscribeToBackups](https://github.com/alexbosworth/ln-service#subscribetobackups): Get notified on channel funds recovery backup file updates. - [subscribeToBlocks](https://github.com/alexbosworth/ln-service#subscribetoblocks): Get notified when the Blockchain is updated. - [subscribeToChainAddress](https://github.com/alexbosworth/ln-service#subscribetochainaddress): Get notified when funds are sent to an on-chain address. - [subscribeToChainSpend](https://github.com/alexbosworth/ln-service#subscribetochainspend): Get notified when a UTXO is spent. - [subscribeToChannels](https://github.com/alexbosworth/ln-service#subscribetochannels): Get notified when the set of active channels is updated. - [subscribeToForwardRequests](https://github.com/alexbosworth/ln-service#subscribetoforwardrequests): Get notified on requests to begin forward flows and interactively accept or reject or settle them. - [subscribeToForwards](https://github.com/alexbosworth/ln-service#subscribetoforwards): Get notified on off-chain routed payment events. - [subscribeToGraph](https://github.com/alexbosworth/ln-service#subscribetograph): Get notified of changes to the public routing graph nodes and channels. - [subscribeToInvoice](https://github.com/alexbosworth/ln-service#subscribetoinvoice): Get notified of status updates for incoming payments. - [subscribeToInvoices](https://github.com/alexbosworth/ln-service#subscribetoinvoices): Get notified of status updates on past created invoices. - [subscribeToOpenRequests](https://github.com/alexbosworth/ln-service#subscribetoopenrequests): Get notified on requests to open an inbound channel and interactively accept or reject them. - [subscribeToPastPayment](https://github.com/alexbosworth/ln-service#subscribetopastpayment): Get notified of the current and ongoing status of a past off-chain payment. - [subscribeToPastPayments](https://github.com/alexbosworth/ln-service#subscribetopastpayments): Get notified of successful outgoing payments. - [subscribeToPayViaDetails](https://github.com/alexbosworth/ln-service#subscribetopayviadetails): Make an off-chain payment using payment details and subscribe to the status of that payment. - [subscribeToPayViaRequest](https://github.com/alexbosworth/ln-service#subscribetopayviarequest): Make an off-chain payment using a payment request and subscribe to the payment status. - [subscribeToPayViaRoutes](https://github.com/alexbosworth/ln-service#subscribetopayviaroutes): Start an off-chain payment using specific payment routes and subscribe to the payment result. - [subscribeToPayments](https://github.com/alexbosworth/ln-service#subscribetopayments): Subscribe to off-chain payments going out and being resolved - [subscribeToPeerMessages](https://github.com/alexbosworth/ln-service#subscribetopeermessages): Listen for incoming peer messages. - [subscribeToPeers](https://github.com/alexbosworth/ln-service#subscribetopeers): Listen to peer disconnect and connect events. - [subscribeToProbeForRoute](https://github.com/alexbosworth/ln-service#subscribetoprobeforroute): Start an off-chain probe to find a payable route and get notified on the status of the probe. - [subscribeToRpcRequests](https://github.com/alexbosworth/ln-service#subscribetorpcrequests): Intercept all incoming and outgoing traffic to the RPC - [subscribeToTransactions](https://github.com/alexbosworth/ln-service#subscribetotransactions): Get notified on on-chain transaction activity. - [subscribeToWalletStatus](https://github.com/alexbosworth/ln-service#subscribetowalletstatus): Listen to updates to wallet state - [unauthenticatedLndGrpc](https://github.com/alexbosworth/ln-service#unauthenticatedlndgrpc): Create an lnd object for use with methods that do not require authentication credentials. - [unlockUtxo](https://github.com/alexbosworth/ln-service#unlockutxo): Release a lease on a wallet UTXO to allow it to be selected for spending again. - [unlockWallet](https://github.com/alexbosworth/ln-service#unlockwallet): Decrypt the wallet and start the daemon - [updateAlias](https://github.com/alexbosworth/ln-service#updatealias): Update the advertised node alias - [updateChainTransaction](https://github.com/alexbosworth/ln-service#updatechaintransaction): Edit the metadata of an on-chain transaction record. - [updateColor](https://github.com/alexbosworth/ln-service#updatecolor): Update the advertised node color - [updateConnectedWatchtower](https://github.com/alexbosworth/ln-service#updateconnectedwatchtower): Edit the settings on an added watchtower - [updateGroupSigningSession](https://github.com/alexbosworth/ln-service#updategroupsigningsession): Update a MuSig2 signing session with nonces and get a partial signature - [updatePathfindingSettings](https://github.com/alexbosworth/ln-service#updatepathfindingsettings): Edit the configuration for routing calculations - [updateRoutingFees](https://github.com/alexbosworth/ln-service#updateroutingfees): Set the forwarding fees or other routing policies for a channel or all channels. - [verifyAccess](https://github.com/alexbosworth/ln-service#verifyaccess): Confirm a macaroon has permission to access a given resource. - [verifyBackup](https://github.com/alexbosworth/ln-service#verifybackup): Check if a channel fund recovery backup file is valid. - [verifyBackups](https://github.com/alexbosworth/ln-service#verifybackups): Check if multiple channel fund recovery backups are valid. - [verifyBytesSignature](https://github.com/alexbosworth/ln-service#verifybytessignature): Check that a signature over arbitrary bytes is valid. - [verifyChainAddressMessage](https://github.com/alexbosworth/ln-service#verifychainaddressmessage): Verify that a chain address message has a valid ECDSA signature - [verifyMessage](https://github.com/alexbosworth/ln-service#verifymessage): Check that a message from a node in the graph has a valid signature.