59 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
0.9.0rc2 - 2020-07-18
Added
- plugin:
paywas rewritten to use the new payment flow. Seelegacypayfor old version (3809) - plugin:
paywill split payments that are failing due to their size into smaller parts, if recipient supports thebasic_mppoption (3809) - plugin:
paywill split large payments into parts of approximately 10k sat if the recipient supports thebasic_mppoption (3809) - plugin: The pay plugin has a new
--disable-mppflag that allows opting out of the above two multi-part payment addition. (3809) - JSON-RPC: new low-level coin selection
fundpsbtroutine. (3825) - JSON-RPC: The
paycommand now uses the new payment flow, the newlegacypaycommand can be used to issue payment with the legacy code if required. (3826) - JSON-RPC: The
keysendcommand allows sending to a node without requiring an invoice first. (3792) - JSON-RPC:
listfundsnow has a 'scriptpubkey' field. (3821) - docker: Docker build now includes
LIGHTNINGD_NETWORKENV variable which defaults to "bitcoin". An user can override this (e.g. by-eoption indocker run) to run docker container in regtest or testnet or any valid argument to--network. (3813) - cli: We now install
lightning-hsmtoolfor yourhsm_secretneeds. (3802) - JSON-RPC: new call
signpsbtwhich will add the wallet's signatures to a provided psbt (3775) - JSON-RPC: new call
sendpsbtwhich will finalize and send a signed PSBT (3775) - JSON-RPC: Adds two new rpc methods,
reserveinputsandunreserveinputs, which allow for reserving or unreserving wallet UTXOs (3775) - Python:
pyln.spec.bolt{1,2,4,7}packages providing python versions of the spec text and defined messages. (3777) - pyln: new module
pyln.proto.message.bolts(3733) - cli: New
--flatmode for easy grepping oflightning-clioutput. (3722) - plugins: new notification type,
coin_movement, which tracks all fund movements for a node (3614) - plugin: Added a new
commitment_revocationhook that provides the plugin with penalty transactions for all revoked transactions, e.g., to push them to a watchtower. (3659) - JSON-API:
listchannelsnow shows channelfeatures. (3685) - plugin: New
invoice_creationplugin event (3658) - docs: Install documentation now has information about building for Alpine linux (3660)
Changed
- JSON-RPC:
fundchannel_cancelno longer requires its undocumentedchannel_idargument afterfundchannel_complete. (3787) - JSON-RPC:
fundchannel_cancelwill now succeed even when executed while afundchannel_completeis ongoing; in that case, it will be considered as cancelling the funding after thefundchannel_completesucceeds. (3778) - JSON-RPC:
listfunds'outputs' now includes reserved outputs, designated as 'reserved' = true (3764) - JSON-RPC:
txpreparenow prepares transactions whosenLockTimeis set to the tip blockheight, instead of using 0.fundchannelwill usenLockTimeset to the tip blockheight as well. (3797) - build: default compile output is prettier and much less verbose (3686)
- config: the
plugin-disableoption now works even if specified before the plugin is found. (3679) - plugins: The
autocleanplugin is no longer dynamic (you cannot manage it with thepluginRPC command anymore). (3788) - plugin: The
paystatusoutput changed as a result of the payment flow rework (3809)
Deprecated
Note: You should always set allow-deprecated-apis=false to test for changes.
- JSON-RPC: the
legacypaymethod from the pay plugin will be removed afterpayproves stable (3809)
Removed
- protocol: support for optional fields of the reestablish message are now compulsory. (3782)
Fixed
- JSON-RPC: Reject some bad JSON at parsing. (3761)
- JSON-RPC: The
feerateparameters now correctly handle the standardness minimum when passed asperkb. (3772) - JSON-RPC:
listtransactionsnow displays all txids as little endian (3741) - JSON-RPC:
paynow respects maxfeepercent, even for tiny amounts. (3693) - JSON-RPC:
withdrawandtxpreparefeeratecan be a JSON number. (3821) - bitcoin:
lightningdnow always exits if the Bitcoin backend failed unexpectedly. (3675) - cli: Bash completion on
lightning-clinow works again (3719) - config: we now take the
--commit-feeparameter into account. (3732) - db: Fixed a failing assertion if we reconnect to a peer that we had a channel with before, and then attempt to insert the peer into the DB twice. (3801)
- hsmtool: Make the password argument optional for
guesstoremoteanddumpcommitmentssub-commands, as shown in our documentation and help text. (3822) - macOS: Build for macOS Catalina / Apple clang v11.0.3 fixed (3756)
- protocol: Fixed a deviation from BOLT#2: if both nodes advertised
option_upfront_shutdown_scriptfeature: MUST include ... a zero-lengthshutdown_scriptpubkey. (3816) - wumbo: negotiate successfully with Eclair nodes. (3712)
Security
0.8.2 - 2020-04-30: "A Scalable Ethereum Blockchain"
This release was named by @arowser.
Added
- pay: The
keysendplugin implements the ability to receive spontaneous payments (keysend) (3611) - Plugin: the Bitcoin backend plugin API is now final. (3620)
- Plugin:
htlc_acceptedhook can now offer a replacement onionpayload. (3611) - Plugin:
feature_setobject added toinit(3612) - Plugin: 'flag'-type option now available. (3586)
- JSON API: New
getsharedsecretcommand, which lets you compute a shared secret with this node knowing only a public point. This implements the BOLT standard of hashing the ECDH point, and is incompatible with ECIES. (3490) - JSON API:
large-channelsoption to negotiate opening larger channels. (3612) - JSON API: New optional parameter to the
closecommand to control the closing transaction fee negotiation back off step (3390) - JSON API:
connectreturnsfeaturesof the connected peer on success. (3612) - JSON API:
listpeersnow hasreceivable_msat(3572) - JSON API: The fields "opening", "mutual_close", "unilateral_close", "delayed_to_us", "htlc_resolution" and "penalty" have been added to the
feeratescommand. (3570) - JSON API: "htlc_timeout_satoshis" and "htlc_success_satoshis" fields have been added to the
feeratescommand. (3570) - pyln now sends proper error on bad calls to plugin methods (3640)
- devtools: The
oniontool can now generate, compress and decompress onions for rendez-vous routing (3557) - doc: An FAQ was added, accessible at https://lightning.readthedocs.io/FAQ.html (3551)
Changed
- We now use a higher feerate for resolving onchain HTLCs and for penalty transactions (3592)
- We now announce multiple addresses of the same type, if given. (3609)
- pay: Improved the performance of the
pay-plugin by limiting thelistchannelswhen computing the shadow route. (3617) - JSON API:
invoiceexposeprivatechannelsnow includes explicitly named channels even if they seem like dead-ends. (3633) - Added workaround for lnd rejecting our commitment_signed when we send an update_fee after channel confirmed. (3634)
- We now batch the requests for fee estimation to our Bitcoin backend. (3570)
- We now get more fine-grained fee estimation from our Bitcoin backend. (3570)
- Forwarding messages is now much faster (less inter-daemon traffic) (3547)
- dependencies: We no longer depend on python2 which has reached end-of-life (3552)
Deprecated
Note: You should always set allow-deprecated-apis=false to test for changes.
- JSON API:
fundchannel_startsatoshifield really deprecated now (useamount). (3603) - JSON API: The "urgent", "slow", and "normal" field of the
feeratescommand are now deprecated. (3570) - JSON API: Removed double wrapping of
rpc_commandpayload inrpc_commandJSON field. (3560) - Plugins: htlc_accepted_hook "failure_code" only handles simple cases now, use "failure_message". (3472)
- Plugins: invoice_payment_hook "failure_code" only handles simple cases now, use "failure_message". (3472)
Removed
- JSON API:
listnodesglobalfeaturesoutput (featuressince in 0.7.3). (3603) - JSON API:
listpeerslocalfeaturesandglobalfeaturesoutput (featuressince in 0.7.3). (3603) - JSON API:
peer_connectedhooklocalfeaturesandglobalfeaturesoutput (featuressince in 0.7.3). (3603) - JSON API:
fundchannelandfundchannel_startsatoshiparameter removed (renamed toamountin 0.7.3). (3603) - JSON API:
closeforceparameter removed (deprecated in 0.7.2.1) (3603) - JSON API:
sendpaydescriptionparameter removed (renamed tolabelin 0.7.0). (3603)
Fixed
- Plugins: A crashing plugin will no longer cause a hook call to be delayed indefinitely (3539)
- Plugins: setting an 'init' feature bit allows us to accept it from peers. (3609)
- Plugins: if an option has a type int or bool, return the option as that type to the plugin's init (3582)
- Plugins: Plugins no longer linger indefinitely if their process terminates (3539)
- JSON API: Pending RPC method calls are now terminated if the handling plugin exits prematurely. (3639)
- JSON API:
fundchannel_startreturnsamounteven when deprecated APIs are enabled. (3603) - JSON API: Passing 0 as minconf to withdraw allows you to use unconfirmed transaction outputs, even if explicitly passed as the
utxosparameter (3593) - JSON API:
txpreparedoesn't crash lightningd anymore if you pass unconfirmed utxos (3534) - invoice: The invoice parser assumed that an amount without a multiplier was denominated in msatoshi instead of bitcoins. (3636)
- pay: The
pay-plugin was generating non-contiguous shadow routes (3617) paywould crash on expired waits with tried routes (3630)paywould crash when attempting to find cheaper route with exemptfee (3630)- Multiple definition of chainparams on Fedora (or other really recent gcc) (3631)
- bcli now handles 0msat outputs in gettxout. (3605)
- Fix assertion on reconnect if we fail to run openingd. (3604)
- Use lightning-rfc #740 feespike margin factor of 2 (3589)
- Always broadcast the latest close transaction at the end of the close fee negotiation, instead of sometimes broadcasting the peer's initial closing proposal. (3556)
Security
0.8.1 - 2020-02-12: "Channel to the Moon"
This release named by Vasil Dimov @vasild.
Added
- Plugin: pluggable backends for Bitcoin data queries, default still bitcoind (using bitcoin-cli). (3488)
- Plugin: Plugins can now signal support for experimental protocol extensions by registering featurebits for
node_announcements, the connection handshake, and for invoices. For now this is limited to non-dynamic plugins only (3477) - Plugin: 'plugin start' now restores initial umask before spawning the plugin process (3375)
- JSON API:
fundchannelandfundchannel_startcan now accept an optional parameter,push_msat, which will gift that amount of satoshis to the peer at channel open. (3369) - JSON API:
waitanyinvoicenow supports atimeoutparameter, which when set will cause the command to fail if unpaid aftertimeoutseconds (can be 0). (3449) - Config:
--rpc-file-modesets permissions on the JSON-RPC socket. (3437) - Config:
--subdaemonallows alternate subdaemons. (3372) - lightningd: Optimistic locking prevents instances from running concurrently against the same database, providing linear consistency to changes. (3358)
- hsmd: Added fields to hsm_sign_remote_commitment_tx to allow complete validation by signing daemon. (3363)
- Wallet: withdrawal transactions now sets nlocktime to the current tip. (3465)
- elements: Added support for the dynafed block header format and elementsd >=0.18.1 (3440)
Changed
- JSON API: The hooks
db_write,invoice_payment, andrpc_commandnow accept{ "result": "continue" }to mean "do default action". (3475) - Plugin: Multiple plugins can now register for the htlc_accepted hook. (3489)
- JSON API:
listforwardsnow showsout_channeleven if we couldn't forward. - JSON API:
funchannel_cancel: only the opener of a fundchannel can cancel the channel open (3336) - JSON API:
sendpayoptionalmsatoshiparam for non-MPP (if set), must be the exact amount sent to the final recipient. (3470) - JSON API:
waitinvoicenow returns error code 903 to designate that the invoice expired during wait, instead of the previous -2 (3441) - JSON_API: The
connectcommand now returns its own error codes instead of a generic -1. (3397) - Plugin:
notify_sendpay_successandnotify_sendpay_failureare now always called, even if there is no command waiting on the result. (3405) - hsmtool:
hsmtoolnow creates its backup copy in the same directory as the originalhsm_secretfile. (3409) - JSON API:
invoiceexposeprivatechannelscan specify exact channel candidates. (3351) - JSON API:
db_writenew fielddata_versionwhich contains a numeric transaction counter. (3358) - JSON API:
plugin stopresult is now accessible using theresultkey instead of the empty ('') key. (3374) - lightning-cli: specifying
--rpc-file(without--network) has been restored. (3353)
Deprecated
Note: You should always set allow-deprecated-apis=false to test for changes.
- JSON API: The hook
db_writereturningtrue: use{ "result": "continue" }. (3475) - JSON API: The hook
invoice_paymentreturning{}: use{ "result": "continue" }. (3475) - JSON API: The hook
rpc_commandreturning{"continue": true}: use{ "result": "continue" }. (3475) - JSON API:
plugin stopresult with an empty ("") key: use "result". (3374)
Removed
- Plugin: Relative plugin paths are not relative to startup (deprecated v0.7.2.1) (3471)
- JSON API: Dummy fields in listforwards (deprecated v0.7.2.1) (3471)
Fixed
- Doc: Corrected and expanded
lightning-listpeers.7documentation. (3497) - Doc: Fixed factual errors in
lightning-listchannels.7documentation. (3494) - Protocol: Corner case where channel could become unusable (https://github.com/lightningnetwork/lightning-rfc/issues/728) (3500)
- Plugins: Dynamic C plugins can now be managed when lightningd is up (3480)
- Doc:
connect: clarified failure problems and usage. (3459) - Doc:
fundchannel: clarify that we automaticallyconnects if your node knows how. (3459) - Protocol: Now correctly reject "fees" paid when we're the final hop (lightning-rfc#711) (3474)
- JSON API:
txprepareno longer crashes when more than two outputs are specified (3384) - Pyln: now includes the "jsonrpc" field to jsonrpc2 requests (3442)
- Plugin:
paynow detects a previously non-permanent error (final_cltv_too_soon) that has been merged into a permanent error (incorrect_or_unknown_payment_details), and retries. (3376) - JSON API: The arguments for
createonionare now checked to ensure they fit in the onion packet. (3404) - TOR: We don't send any further request if the return code of connect is not zero or error. (3408)
- Build: Developer mode compilation on FreeBSD. (3344)
- Protocol: We now reject invoices which ask for sub-millisatoshi amounts (3481)
Security
0.8.0 - 2019-12-16: "Blockchain Good, Orange Coin Bad"
This release was named by Michael Schmoock @m-schmoock.
Added
- JSON API: Added
createonionandsendonionJSON-RPC methods allowing the implementation of custom protocol extensions that are not directly implemented in c-lightning itself. (3260) - JSON API:
listinvoicesnow displays the payment preimage if the invoice was paid. (3295) - JSON API:
listpeerschannels now includeclose_toandclose_to_addriff aclose_toaddress was specified at channel open (3223) - The new
pyln-testingpackage now contains the testing infrastructure so it can be reused to test against c-lightning in external projects (3218) - config: configuration files now support
include. (3268) - options: Allow the Tor inbound service port differ from 9735 (3155)
- options: Persistent Tor address support (3155)
- plugins: A new plugin hook,
rpc_commandallows a plugin to take overlightningdfor any RPC command. (2925) - plugins: Allow the
accepterto specify an upfront_shutdown_script for a channel via aclose_tofield in the openchannel hook result (3280) - plugins: Plugins may now handle modern TLV-style payloads via the
htlc_acceptedhook (3260) - plugins: libplugin now supports writing plugins which register to hooks (3317)
- plugins: libplugin now supports writing plugins which register to notifications (3317)
- protocol: Payment amount fuzzing is restored, but through shadow routing. (3212)
- protocol: We now signal the network we are running on at init. (3300)
- protocol: can now send and receive TLV-style onion messages. (3335)
- protocol: can now send and receive BOLT11 payment_secrets. (3335)
- protocol: can now receive basic multi-part payments. (3335)
- JSON RPC: low-level commands sendpay and waitsendpay can now be used to manually send multi-part payments. (3335)
- quirks: Workaround LND's
reply_channel_rangeissues instead of sending error. (3264) - tools: A new command,
guesstoremote, is added to the hsmtool. It is meant to be used to recover funds after an unilateral close of a channel withoption_static_remotekeyenabled. (3292)
Changed
⚠️ The default network and the default location of the lightning home directory changed. Please make sure that the configuration, key file and database are moved into the network-specific subdirectory.
- config: Default network (new installs) is now bitcoin, not testnet. (3268)
- config: Lightning directory, plugins and files moved into
<network>/subdir (3268) - JSON API: The
fundchannelcommand now tries to connect to the peer before funding the channel, no need toconnectbeforefundchannelif an address for the peer is known (3314) - JSON API:
htlc_acceptedhook hastype(currentlylegacyortlv) and other fields directly insideonion. (3167) - JSON API:
lightning_prefixes removed from subdaemon names, including in listpeersownerfield. (3241) - JSON API:
listconfigsnow structures plugins and include their options (3283) - JSON API: the
raw_payloadnow includes the first byte, i.e., the realm byte, of the payload as well. This allows correct decoding of a TLV payload in the plugins. (3261) - logging: formatting made uniform: [NODEID-]SUBSYSTEM: MESSAGE (3241)
- options:
configand<network>/configread by default. (3268) - options: log-level can now specify different levels for different subsystems. (3241)
- protocol: The TLV payloads for the onion packets are no longer considered an experimental feature and generally available. (3260)
- quirks: We'll now reconnect and retry if we get an error on an established channel. This works around lnd sending error messages that may be non-fatal. (3340)
⚠️ If you don't have a config file, you now may need to specify the network to lightning-cli (3268)
Deprecated
Note: You should always set allow-deprecated-apis=false to test for changes.
- JSON API:
listconfigsduplicated "plugin" paths (3283) - JSON API:
htlc_acceptedhookper_hop_v0object deprecated, as isshort_channel_idfor the final hop. (3167)
Removed
- JSON:
listpayswon't shown payments made via sendpay without a bolt11 string, or before 0.7.0. (3309)
Fixed
- JSON API: #3231
listtransactionscrash (3256) - JSON API:
listconfigsappends '...' to truncated config options. (3268) pyln-clientnow handles unicode characters in JSON-RPC requests and responses correctly. (3018)- bitcoin: If bitcoind goes backwards (e.g. reindex) refuse to start (unless forced with --rescan). (3274)
- bug:
gossipdcrash on huge number of unknown channels. (3273) - gossip: No longer discard most
node_announcements(fixes #3194) (3262) - options: We disable all dns even on startup the scan for bogus dns servers, if
--always-use-proxyis set true (3251) - protocol: "Bad commitment signature" closing channels when we sent back-to-back update_fee messages across multiple reconnects. (3329)
- protocol: Unlikely corner case is simultanous HTLCs near balance limits fixed. (3286)
Security
0.7.3 - 2019-10-18: "Bitcoin's Proof of Stake"
This release was named by @trueptolemy.
Added
- DB: lightningd now supports different SQL backends, instead of the default which is sqlite3. Adds a PostgresSQL driver
- elements: Add support of Liquid-BTC on elements
- JSON API:
closenow accepts an optional parameterdestination, to which the to-local output will be sent. - JSON API:
txprepareandwithdrawnow accept an optional parameterutxos, a list of utxos to include in the prepared transaction - JSON API:
listfundsnow lists a blockheight for confirmed transactions, and hasconnectedandstatefields for channels, likelistpeers. - JSON API:
fundchannel_startnow includes fieldscriptpubkey - JSON API: New method
listtransactions - JSON API:
signmessagewill now create a signature from your node on a message;checkmessagewill verify it. - JSON API:
fundchannel_startnow accepts an optional parameterclose_to, the address to which these channel funds should be sent to on close. Returnsusing_close_toif will use. - Plugin: new notifications
sendpay_successandsendpay_failure. - Protocol: nodes now announce features in
node_announcementbroadcasts. - Protocol: we now offer
option_gossip_queries_exfor finegrained gossip control. - Protocol: we now retransmit
funding_lockedupon reconnection while closing if there was no update - Protocol: no longer ask for
initial_routing_sync(only affects ancient peers). - bolt11: support for parsing feature bits (field
9). - Wallet: we now support the encryption of the BIP32 master seed (a.k.a.
hsm_secret). - pylightning: includes implementation of handshake protocol
Changed
- Build: Now requires
gettext - JSON API: The parameter
excludeofgetroutenow also support node-id. - JSON API:
txpreparenow usesoutputsas parameter other thandestinationandsatoshi - JSON API:
fundchannel_cancelis extended to work before funding broadcast. - JSON-API:
paycan exclude error nodes if the failcode ofsendpayhas the NODE bit set - JSON API: The
plugincommand now returns on error. A timeout of 20 seconds is added tostartandstartdirsubcommands at the end of which the plugin is errored if it did not complete the handshake withlightningd. - JSON API: The
plugincommand does not allow to start static plugins afterlightningdstartup anymore. - Protocol: We now push our own gossip to all peers, independent of their filter.
- Protocol: Now follows spec in responses to short channel id queries on unknown chainhashes
- Tor: We default now with autotor to generate if possible temporary ED25519-V3 onions. You can use new option
enable-autotor-v2-modeto fallback to V2 RSA1024 mode.
Deprecated
Note: You should always set allow-deprecated-apis=false to test for changes.
- JSON API:
fundchannelnow usesamountas the parameter name to replacesatoshi - JSON API:
fundchannel_startnow usesamountas the parameter name to replacesatoshi - JSON API:
listpeersandlistnodesfieldslocalfeaturesandglobalfeatures(now justfeatures). - Plugin:
peer_connectedhook fieldslocalfeaturesandglobalfeatures(now justfeatures).
Removed
- JSON API:
short_channel_idparameters in JSON commands with:separators (deprecated since 0.7.0). - JSON API:
descriptionparameters inpayandsendpay(deprecated since 0.7.0). - JSON API:
descriptionoutput field inwaitsendpayandsendpay(deprecated since 0.7.0). - JSON API:
listpayments(deprecated since 0.7.0).
Fixed
- Fixed bogus "Bad commit_sig signature" which caused channel closures when reconnecting after updating fees under simultaneous bidirectional traffic.
- Relative
--lightning_diris now working again. - Build: MacOS now builds again (missing pwritev).
Security
0.7.2.1 - 2019-08-19: "Nakamoto's Pre-approval by US Congress"
This release was named by Antoine Poinsot @darosior.
(Technically a .1 release, as it contains last-minute fixes after 0.7.2 was tagged)
Added
- JSON API: a new command
pluginallows one to manage plugins without restartinglightningd. - Plugin: a new boolean field can be added to a plugin manifest,
dynamic. It allows a plugin to tell if it can be started or stopped "on-the-fly". - Plugin: a new boolean field is added to the
init'sconfiguration,startup. It allows a plugin to know if it has been started onlightningdstartup. - Plugin: new notifications
invoice_payment,forward_eventandchannel_opened. - Protocol:
--enable-experimental-featuresadds gossip query extensions aka https://github.com/lightningnetwork/lightning-rfc/pull/557 - contrib: new
bootstrap-node.shto connect to random mainnet nodes. - JSON API:
listfundsnow returns alsofunding_outputforchannels - Plugin: plugins can now suggest
lightning-clidefault to -H for responses. - Lightningd: add support for
signetnetworks using the--network=signetor--signetstartup option
Changed
- Build: now requires
python3-makoto be installed, i.e.sudo apt-get install python3-mako - JSON API:
closeoptional arguments have changed: it now defaults to unilateral close after 48 hours. - Plugin: if the config directory has a
pluginssubdirectory, those are loaded. - lightningd: check bitcoind version when setup topology and confirm the version not older than v0.15.0.
- Protocol: space out reconnections on startup if we have more than 5 peers.
- JSON API:
listforwardsincludes the 'payment_hash' field. - Plugin: now plugins always run from the
lightning-dirfor easy local storage.
Deprecated
Note: You should always set allow-deprecated-apis=false to test for
changes.
- Plugin: using startup-relative paths for
pluginandplugin-dir: they're now relative tolightning-dir. - JSON API:
listforwardsremoved dummy (zero) fields forout_msat,fee_msat,in_channelandout_channelif unknown (i.e. deleted from db, orstatusislocal-failed.
Removed
Fixed
- Plugin:
payno longer crashes on timeout. - Plugin:
disconnectnotifier now called if remote side disconnects. - channeld: ignore, and simply try reconnecting if lnd sends "sync error".
- Protocol: we now correctly ignore unknown odd messages.
- wallet: We will now backfill blocks below our wallet start height on demand when we require them to verify gossip messages. This fixes an issue where we would not remove channels on spend that were opened below that start height because we weren't tracking the funding output.
- Detect when we're still syncing with bitcoin network: don't send or receive
HTLCs or allow
fundchannel. - Rare onchaind error where we don't recover our own unilateral close with multiple same-preimage HTLCs fixed.
Security
0.7.1 - 2019-06-29: "The Unfailing Twitter Consensus Algorithm"
This release was named by (C-Lightning Core Team member) Lisa Neigut @niftynei.
Added
- Protocol: we now enforce
option_upfront_shutdown_scriptif a peer negotiates it. - JSON API: New command
setchannelfeesets channel specific routing fees. - JSON API: new withdraw methods
txprepare,txsendandtxdiscard. - JSON API: add three new RPC commands:
fundchannel_start,fundchannel_completeandfundchannel_cancel. Allows a user to initiate and complete a channel open using funds that are in a external wallet. - Plugin: new hooks
db_writefor intercepting database writes,invoice_paymentfor intercepting invoices before they're paid,openchannelfor intercepting channel opens, andhtlc_acceptedto decide whether to resolve, reject or continue an incoming or forwarded payment.. - Plugin: new notification
warningto report anyLOG_UNUSUAL/LOG_BROKENlevel event. - Plugin: Added a default plugin directory :
lightning_dir/plugins. Each plugin directory it contains will be added to lightningd on startup. - Plugin: the
connectedhook can now send anerror_messageto the rejected peer. - JSON API:
newaddroutputsbech32orp2sh-segwit, or both with newallparameter (#2390) - JSON API:
listpeersstatus now shows how many confirmations until channel is open (#2405) - Config: Adds parameter
min-capacity-satto reject tiny channels. - JSON API:
listforwardsnow includes the time an HTLC was received and when it was resolved. Both are expressed as UNIX timestamps to facilitate parsing (Issue #2491, PR #2528) - JSON API:
listforwardsnow includes the local_failed forwards with failcode (Issue #2435, PR #2524) - DB: Store the signatures of channel announcement sent from remote peer into DB, and init channel with signatures from DB directly when reenable the channel. (Issue #2409)
- JSON API:
listchannelshas new fieldshtlc_minimum_msatandhtlc_maximum_msat.
Changed
- Gossip: we no longer compact the
gossip_storefile dynamically, due to lingering bugs. Restart if it gets too large. - Protocol: no longer ask for entire gossip flood from peers, unless we're missing gossip.
- JSON API:
invoiceexpiry defaults to 7 days, and can have s/m/h/d/w suffixes. - Config: Increased default amount for minimal channel capacity from 1k sat to 10k sat.
- JSON API: A new parameter is added to
fundchannel, which now accepts an utxo array to use to fund the channel. - Build: Non-developer builds are now done with "-Og" optimization.
- JSON API:
paywill no longer return failure until it is no longer retrying; previously it could "timeout" but still make the payment. - JSON API: the command objects that
helpoutputs now contain a new string field :category(can be "bitcoin", "channels", "network", "payment", "plugins", "utility", "developer" for native commands, or any other new category set by a plugin). - Plugin: a plugin can now set the category of a newly created RPC command. This possibility has been added to libplugin.c and pylightning.
- lightning-cli: the human readable help is now more human and more readable : commands are sorted alphabetically and ordered by categories.
Deprecated
Note: You should always set allow-deprecated-apis=false to test for
changes.
- JSON API:
newaddroutput fieldaddress: usebech32orp2sh-segwitinstead.
Removed
- JSON RPC:
global_featuresandlocal_featuresfields andlistchannels'flagsfield. (Deprecated since 0.6.2). - pylightning: Remove RPC support for c-lightning before 0.6.3.
Fixed
- Protocol: reconnection during closing negotiation now supports
option_data_loss_protectproperly. --bind-addr=<path>fixed for nodes using local sockets (eg. testing).- Unannounced local channels were forgotten for routing on restart until reconnection occurred.
- lightning-cli: arguments containing
"now succeed, rather than causing JSON errors. - Protocol: handle lnd sending more messages before
reestablish; don't fail channel, and handle older lnd's spurious empty commitments. - Fixed
fundchannelcrash when we have many UTXOs and we skip unconfirmed ones. - lightningd: fixed occasional hang on
connectwhen peer had sent error. - JSON RPC:
decodeinvoiceandpaynow handle unknown invoice fields properly. - JSON API:
waitsendpay(PAY_STOPPED_RETRYING) error handler now returns valid JSON - protocol: don't send multiple identical feerate changes if we want the feerate higher than we can afford.
- JSON API:
stopnow only returns once lightningd has released all resources.
Security
- Fixes CVE-2019-12998 (Full Disclosure).
0.7.0 - 2019-02-28: "Actually an Altcoin"
This release was named by Mark Beckwith @wythe.
Added
- plugins: fully enabled, and ready for you to write some!
- plugins:
payis now a plugin. - protocol:
paywill now use routehints in invoices if it needs to. - build: reproducible source zipfile and Ubuntu 18.04.1 build.
- JSON API: New command
paystatusgives detailed information onpaycommands. - JSON API:
getroute,invoice,sendpayandpaycommandsmsatoshiparameter can have suffixesmsat,sat(optionally with 3 decimals) orbtc(with 1 to 11 decimal places). - JSON API:
fundchannelandwithdrawcommandssatoshiparameter can have suffixesmsat(must end in000),satorbtc(with 1 to 8 decimal places). - JSON API:
decodepay,getroute,sendpay,pay,listpeers,listfunds,listchannelsand all invoice commands now return anamount_msatfield which has anmsatsuffix. - JSON API:
listfundschannelsnow has_msatfields for each existing raw amount field, withmsatsuffix. - JSON API:
waitsendpaynow has anerring_directionfield. - JSON API:
listpeersnow has adirectionfield inchannels. - JSON API:
listchannelsnow takes asourceoption to filter by node id. - JSON API:
getrouteriskfactorargument is simplified;paynow defaults to setting it to 10. - JSON API:
sendpaynow takes abolt11field, and it's returned inlistpaymentsandwaitsendpay. - JSON API:
fundchannelandwithdrawnow have a new parameterminconfthat limits coinselection to outputs that have at leastminconfconfirmations (default 1). (#2380) - JSON API:
listfundsnow displays addresses for all outputs owned by the wallet (#2387) - JSON API:
waitsendpayandsendpayoutput fieldlabelas specified bysendpaycall. - JSON API:
listpayscommand for higher-level payment view thanlistpayments, especially important with multi-part-payments coming. - JSON API:
listpaymentsis nowlistsendpays. - lightning-cli:
help <cmd>finds man pages even ifmake installnot run. - pylightning: New class 'Millisatoshi' can be used for JSON API, and new '_msat' fields are turned into this on reading.
Changed
- protocol:
option_data_loss_protectis now enabled by default. - JSON API: The
short_channel_idseparator has been changed to bexto match the specification. - JSON API:
listpeersnow includesfunding_allocation_msat, which returns a map of the amounts initially funded to the channel by each peer, indexed by channel id. - JSON API:
helpwith acommandargument gives a JSON array, like other commands. - JSON API:
sendpaydescriptionparameter is renamedlabel. - JSON API:
paynow takes an optionallabelparameter for labelling payments, in place of never-useddescription. - build: we'll use the system libbase58 and libsodium if found suitable.
Deprecated
Note: You should always set allow-deprecated-apis=false to test for
changes.
We recommend that you transition to the reading the new JSON _msat
fields for your own sanity checking, and that you similarly
provide appropriate suffixes for JSON input fields.
- JSON API:
short_channel_idfields in JSON commands with:separators (usexinstead). - JSON API:
paydescriptionis deprecated, as is support for BOLT11 strings usingh. - JSON API:
sendpayparameterdescriptionandwaitsendpayandsendpayoutput fieldsdescription(nowlabel). - JSON API:
listpaymentshas been deprecated (you probably wantlistpays)
Removed
- JSON API: the
waitsendpaycommand error return no longer includeschannel_update
Fixed
- Protocol: handling
query_channel_rangefor large numbers of blocks (eg. 4 billion) was slow due to a bug. - Fixed occasional deadlock with peers when exchanging huge amounts of gossip.
- Fixed a crash when running in daemon-mode due to db filename overrun (#2348)
- Handle lnd sending premature 'funding_locked' message when we're expected 'reestablish'; we used to close channel if this happened.
- Cleanup peers that started opening a channel, but then disconnected. These would leave a dangling entry in the DB that would cause this peer to be unable to connect. (PR #2371)
- You can no longer make giant unpayable "wumbo" invoices.
- CLTV of total route now correctly evaluated when finding best route.
riskfactorarguments topayandgetroutenow have an effect.- Fixed the version of bip32 private_key to BIP32_VER_MAIN_PRIVATE: we used BIP32_VER_MAIN_PRIVATE for bitcoin/litecoin mainnet, and BIP32_VER_TEST_PRIVATE for others. (PR #2436)
Security
0.6.3 - 2019-01-09: "The Smallblock Conspiracy"
This release was named by @molxyz and @ctrlbreak.
Added
- JSON API: New command
checkchecks the validity of a JSON API call without running it. - JSON API:
getinfonow returnsnum_peersnum_pending_channels,num_active_channelsandnum_inactive_channelsfields. - JSON API: use
\n\nto terminate responses, for simplified parsing (pylightning now relies on this) - JSON API:
fundchannelnow includes anannounceoption, when false it will keep channel private. Defaults to true. - JSON API:
listpeers'schannelsnow includes aprivateflag to indicate if channel is announced or not. - JSON API:
invoiceroute hints may now include private channels if you have no public ones, unless new optionexposeprivatechannelsis false. - Plugins: experimental plugin support for
lightningd, including option passthrough and JSON-RPC passthrough. - Protocol: we now support features
option_static_remotekeyandgossip_queries_exfor peers.
Changed
- JSON API:
payanddecodepayaccept and ignorelightning:prefixes. - pylightning: Allow either keyword arguments or positional arguments.
- JSON-RPC: messages are now separated by 2 consecutive newlines.
- JSON-RPC:
jsonrpc:2.0now included in json-rpc command calls. complies with spec.
Deprecated
Note: You should always set allow-deprecated-apis=false to test for
changes.
- pylightning: Support for pre-2-newline JSON-RPC (<= 0.6.2 lightningd) is deprecated.
Removed
- option_data_loss_protect is now only offered if EXPERIMENTAL_FEATURES is enabled, since it seems incompatible with lnd and has known bugs.
Fixed
- JSON API: uppercase invoices now parsed correctly (broken in 0.6.2).
- JSON API: commands are once again read even if one hasn't responded yet (broken in 0.6.2).
- Protocol: allow lnd to send
update_feebeforefunding_locked. - Protocol: fix limit on how much funder can send (fee was 1000x too small)
- Protocol: don't send invalid onion errors if peer says onion was bad.
- Protocol: don't crash when peer sends a 0-block-expiry HTLC.
- pylightning: handle multiple simultanous RPC replies reliably.
- build: we use
--prefixas handed to./configure
Security
0.6.2 - 2018-10-20: "The Consensus Loving Nasal Daemon"
This release was named by practicalswift.
Added
- JSON API:
listpeershas new fieldscratch_txid: the latest tx in channel. - JSON API:
listpeershas new arrayhtlcs: the current live payments. - JSON API:
listchannelshas two new fields:message_flagsandchannel_flags. This replacesflags. - JSON API:
invoicenow adds route hint to invoices for incoming capacity (RouteBoost), and warns if insufficient capacity. - JSON API:
listforwardslists all forwarded payments, their associated channels, and fees. - JSON API:
getinfoshows forwarding fees earnt asmsatoshi_fees_collected. - Bitcoind: more parallelism in requests, for very slow nodes.
- Testing: fixed logging, cleaner interception of bitcoind, minor fixes.
- Protocol: we set and handle the new
htlc_maximum_msatchannel_update field.
Changed
- Protocol:
channel_updatesent to disable channel only if we reject an HTLC. - Protocol: we don't send redundant
node_announcementon every new channel. - Config: config file can override
lightning-dir(makes sense with--conf). - Config:
--confoption is now relative to current directory, notlightning-dir. - lightning-cli:
help <cmd>prints basic information even if no man page found. - JSON API:
getinfonow reports global statistics about forwarded payments, including total fees earned and amounts routed.
Deprecated
Note: You should always set allow-deprecated-apis=false to test for
changes.
- JSON RPC:
listchannels'flagsfield. This has been split into two fields, see Added. - JSON RPC:
global_featuresandlocal_featuresfields: useglobalfeaturesandlocalfeaturesas per BOLT #1.
Removed
- JSON API: the optional 'seed' parameter to
getroutewas removed.
Fixed
- Startup: more coherent complaint if daemon already running.
- Lightningd: correctly save full HTLCs across restarts; fixup old databases.
- JSON RPC:
getinfonow shows correct Tor port. - JSON RPC:
pingnow works even after one peer fails to respond. - JSON RPC:
getroutefuzzpercentandpaymaxfeepercentcan now be > 100. - JSON RPC:
riskfactorinpayandgetrouteno longer always treated as 1. - JSON-RPC:
listpeerswas always reporting 0 for all stats. - JSON RPC:
withdraw allsaysCannot afford transactionif you have absolutely no funds, rather thanOutput 0 satoshis would be dust. - Protocol: don't send gossip about closed channels.
- Protocol: fix occasional deadlock when both peers flood with gossip.
- Protocol: fix occasional long delay on sending
reply_short_channel_ids_end. - Protocol: re-send
node_announcementwhen address/alias/color etc change. - Protocol: multiple HTLCs with the same payment_hash are handled correctly.
- Options: 'autotor' defaults to port 9051 if not specified.
Security
0.6.1 - 2018-09-11: "Principled Opposition To Segwit"
This release was named by ZmnSCPxj.
Added
- Protocol: gossipd now deliberately delays spamming with
channel_update. - Protocol: liveness ping when we commit changes but peer is idle: speeds up failures and reduces forced closures.
- Protocol:
option_data_loss_protectnow supported to protect peers against being out-of-date. - JSON API: Added description to invoices and payments (#1740).
- JSON API:
getinfohas new fieldsaliasandcolor. - JSON API:
listpeershas new fieldsglobal_featuresandlocal_features. - JSON API:
listnodeshas new fieldglobal_features. - JSON API:
pingcommand to send a ping to a connected peer. - JSON API:
feeratescommand to retrieve current fee estimates. - JSON API:
withdrawandfundchannelcan be given manual feerate. - Config:
--confoption to set config file. - Documentation: Added CHANGELOG.md
- pylightning: RpcError now has
methodandpayloadfields. - Sending lightningd a SIGHUP will make it reopen its
log-file, if any.
Changed
- Protocol: Fee estimates are now smoothed over time, to avoid sudden jumps.
- Config: You can only announce one address if each type (IPv4, IPv6, TORv2, TORv3).
- lightning-cli: the help command for a specific command now runs the
mancommand. - HSM: The HSM daemon now maintains the per-peer secrets, rather than handing them out. It's still lax in what it signs though.
- connectd: A new daemon
lightning_connectdhandles connecting to/from peers, instead ofgossipddoing that itself.lightning_openingdnow handles peers immediately, even if they never actually open a channel. - Test:
python-xdistis now a dependency for tests. - Logging: JSON connections no longer spam debug logs.
- Routing: We no longer consider channels that are not usable either because of
their capacity or their
htlc_minimum_msatparameter (#1777) - We now try to connect to all known addresses for a peer, not just the one given or the first one announced.
- Crash logs are now placed one-per file like
crash.log.20180822233752 - We will no longer allow withdrawing funds or funding channels if we
do not have a fee estimate (eg. bitcoind not synced); use new
feeratearg.
Deprecated
Removed
- JSON API:
listpeersresults no long havealiasandcolorfields; they're inlistnodes(we used to internally merge the information). - JSON API:
listpeerswill never havestatefield (it accidentally used to exist and set toGOSSIPINGbefore we opened a channel).connectedwill indicate if we're connected, and thechannelsarray indicates individual channel states (if any). - Config:
default-fee-rateis no longer available; use explicitfeerateoption if necessary. - Removed all Deprecated options from 0.6.
Fixed
- Protocol:
node_announcementmultiple addresses are correctly ordered and uniquified. - Protocol: if we can't estimate feerate, be almost infinitely tolerant of other side setting fees to avoid unilateral close.
- JSON API:
listnodes: now displays node aliases and colors even if they don't advertise a network address - JSON API:
fundchannel all: now restricts to 2^24-1 satoshis rather than failing. - JSON API:
listnodes: now correctly printsaddressesif more than one is advertised. - Config:
bind-addrof a publicly accessible network address was announced. - When we reconnect and have to retransmit failing HTLCs, the errors weren't encrypted by us.
lightningd_configman page is now installed bymake install.- Fixed crash when shutting down during opening a channel (#1737)
- Don't lose track of our own output when applying penalty transaction (#1738)
- Protocol:
channel_updateinside error messages now refers to correct channel. - Stripping type prefix from
channel_updates that are nested in an onion reply to be compatible with eclair and lnd (#1730). - Failing tests no longer delete the test directory, to allow easier debugging (Issue: #1599)
Security
0.6 - 2018-06-22: "I Accidentally The Smart Contract"
In the prehistory of c-lightning, no changelog was kept. But major JSON API changes are tracked.
This release was named by Fabrice Drouin.
Deprecated
Note: You should always set allow-deprecated-apis=false to test for
changes.
- Config:
port. Useaddr=:<portnum>. - Config:
ipaddr. Useaddr. - Config:
anchor-confirms. Usefunding-confirms. - Config:
locktime-blocks. Usewatchtime-blocks. - Protocol: on closing we allow out-of-range offers, prior to spec fix
2018-01-30 ("BOLT 2: order closing-signed negotiation by making
funder send first."
90241d9cf60a598eac8fd839ac81e4093a161272) - JSON API:
listinvoicecommand. Uselistinvoices. - JSON API: invoice result fields
paid_timestampandexpiry_time. Usepaid_atandexpires_at. - JSON API:
invoicecommand fieldfallback. Usefallbacks. - JSON API:
decodepayresult fieldstimestampandfallback. Usecreated_atandfallbacks. - JSON API: payment result fields
timestamp. Usecreated_at. - JSON API:
getinforesult fieldport. Usebindingandaddressarrays. - JSON API:
getlogresult fieldcreation_time. Usecreated_at. - JSON API:
getpeersresult fieldchannel_reserve_satoshis. Usetheir_channel_reserve_satoshis. - JSON API:
getpeersresult fieldto_self_delay. Usetheir_to_self_delay.
Older versions
There predate the BOLT specifications, and are only of vague historic interest:
- 0.1 - 2015-08-08: "MtGox's Cold Wallet" (named by Rusty Russell)
- 0.2 - 2016-01-22: "Butterfly Labs' Timely Delivery" (named by Anthony Towns)
- 0.3 - 2016-05-25: "Nakamoto's Genesis Coins" (named by Braydon Fuller)
- 0.4 - 2016-08-19: "Wright's Cryptographic Proof" (named by Christian Decker)
- 0.5 - 2016-10-19: "Bitcoin Savings & Trust Daily Interest" (named by Glenn Willen)
- 0.5.1 - 2016-10-21
- 0.5.2 - 2016-11-21: "Bitcoin Savings & Trust Daily Interest II"