15 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.
Unreleased
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. - lightning-cli:
help <cmd>finds man pages even ifmake installnot run. - JSON API:
getroute,invoice,sendpayandpaycommandsmsatoshiparameter can have suffixesmsat,sat(optionally with 3 decimals) orbtc(with 8 or 11 decimals). - JSON API:
fundchannelandwithdrawcommandssatoshiparameter can have suffixesmsat(must end in000),satorbtc(with 8 decimals). - 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: New command
paystatusgives detailed information onpaycommands. - JSON API:
getrouteriskfactorargument is simplified;paynow defaults to setting it to 10. - pylightning: New class 'Millisatoshi' can be used for JSON API, and new '_msat' fields are turned into this on reading.
- JSON API:
fundchannelandwithdrawnow have a new parameterminconfthat limits coinselection to outputs that have at leastminconfconfirmations (default 1). (#2380)
Changed
- 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. option_data_loss_protectis now enabled by default.- JSON API:
helpwith acommandargument gives a JSON array, like other commands. - 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).
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.
- 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.- Handle lnd sending premature 'funding_locked' message when we're expected 'reestablish'; we used to close channel if this happened.
Security
0.6.3 - 2019-01-09: "The Smallblock Conspiracy"
This release 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.
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.
Security
0.6.2 - 2018-10-20: "The Consensus Loving Nasal Daemon"
This release 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 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 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 Chrstian 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"