mirror of
https://github.com/ElementsProject/lightning.git
synced 2024-11-19 09:54:16 +01:00
373 lines
19 KiB
Markdown
373 lines
19 KiB
Markdown
# Changelog
|
|
All notable changes to this project will be documented in this file.
|
|
|
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
|
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
|
## [Unreleased]
|
|
|
|
### Added
|
|
|
|
- JSON API: New command `setchannelfee` sets channel specific routing fees.
|
|
- JSON API: `newaddr` outputs `bech32` or `p2sh-segwit`, or both with new `all` parameter (#2390)
|
|
- JSON API: `listpeers` status now shows how many confirmations until channel is open (#2405)
|
|
- Config: Adds parameter `min-capacity-sat` to reject tiny channels.
|
|
- JSON API: `listforwards` now includes the time an HTLC was received and when it was resolved. Both are expressed as UNIX timestamps to facilitate parsing (Issue [#2491](https://github.com/ElementsProject/lightning/issues/2491), PR [#2528](https://github.com/ElementsProject/lightning/pull/2528))
|
|
- JSON API: new plugin `invoice_payment` hook for intercepting invoices before they're paid.
|
|
- plugin: the `connected` hook can now send an `error_message` to the rejected peer.
|
|
- Protocol: we now enforce `option_upfront_shutdown_script` if a peer negotiates it.
|
|
- JSON API: `listforwards` now includes the local_failed forwards with failcode (Issue [#2435](https://github.com/ElementsProject/lightning/issues/2435), PR [#2524](https://github.com/ElementsProject/lightning/pull/2524))
|
|
|
|
### Changed
|
|
|
|
- JSON API: `invoice` expiry 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.
|
|
|
|
### Deprecated
|
|
|
|
Note: You should always set `allow-deprecated-apis=false` to test for
|
|
changes.
|
|
|
|
- JSON API: `newaddr` output field `address`: use `bech32` or `p2sh-segwit` instead.
|
|
|
|
### Removed
|
|
|
|
- JSON RPC: `global_features` and `local_features` fields and `listchannels`' `flags` field. (Deprecated since 0.6.2).
|
|
|
|
### Fixed
|
|
|
|
- protocol: reconnection during closing negotiation now supports
|
|
`option_data_loss_protect` properly.
|
|
- `--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 `fundchannel` crash when we have many UTXOs and we skip unconfirmed ones.
|
|
- lightningd: fixed occasional hang on `connect` when peer had sent error.
|
|
|
|
### Security
|
|
|
|
## [0.7.0] - 2019-02-28: "Actually an Altcoin"
|
|
|
|
This release named by Mark Beckwith @wythe.
|
|
|
|
### Added
|
|
|
|
- plugins: fully enabled, and ready for you to write some!
|
|
- plugins: `pay` is now a plugin.
|
|
- protocol: `pay` will now use routehints in invoices if it needs to.
|
|
- build: reproducible source zipfile and Ubuntu 18.04.1 build.
|
|
- JSON API: New command `paystatus` gives detailed information on `pay` commands.
|
|
- JSON API: `getroute`, `invoice`, `sendpay` and `pay` commands `msatoshi`
|
|
parameter can have suffixes `msat`, `sat` (optionally with 3 decimals) or `btc`
|
|
(with 1 to 11 decimal places).
|
|
- JSON API: `fundchannel` and `withdraw` commands `satoshi`
|
|
parameter can have suffixes `msat` (must end in `000`), `sat` or `btc`
|
|
(with 1 to 8 decimal places).
|
|
- JSON API: `decodepay`, `getroute`, `sendpay`, `pay`, `listpeers`, `listfunds`, `listchannels` and
|
|
all invoice commands now return an `amount_msat` field which has an `msat` suffix.
|
|
- JSON API: `listfunds` `channels` now has `_msat` fields for each existing raw amount field, with `msat` suffix.
|
|
- JSON API: `waitsendpay` now has an `erring_direction` field.
|
|
- JSON API: `listpeers` now has a `direction` field in `channels`.
|
|
- JSON API: `listchannels` now takes a `source` option to filter by node id.
|
|
- JSON API: `getroute` `riskfactor` argument is simplified; `pay` now defaults to setting it to 10.
|
|
- JSON API: `sendpay` now takes a `bolt11` field, and it's returned in `listpayments` and `waitsendpay`.
|
|
- JSON API: `fundchannel` and `withdraw` now have a new parameter `minconf` that limits coinselection to outputs that have at least `minconf` confirmations (default 1). (#2380)
|
|
- JSON API: `listfunds` now displays addresses for all outputs owned by the wallet (#2387)
|
|
- JSON API: `waitsendpay` and `sendpay` output field `label` as specified by `sendpay` call.
|
|
- JSON API: `listpays` command for higher-level payment view than `listpayments`, especially important with multi-part-payments coming.
|
|
- JSON API: `listpayments` is now `listsendpays`.
|
|
- lightning-cli: `help <cmd>` finds man pages even if `make install` not 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_protect` is now enabled by default.
|
|
- JSON API: The `short_channel_id` separator has been changed to be `x` to match the specification.
|
|
- JSON API: `listpeers` now includes `funding_allocation_msat`, which returns a map of the amounts initially funded to the channel by each peer, indexed by channel id.
|
|
- JSON API: `help` with a `command` argument gives a JSON array, like other commands.
|
|
- JSON API: `sendpay` `description` parameter is renamed `label`.
|
|
- JSON API: `pay` now takes an optional `label` parameter for labelling payments, in place of never-used `description`.
|
|
- 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_id` fields in JSON commands with `:` separators (use `x` instead).
|
|
- JSON API: `pay` `description` is deprecated, as is support for BOLT11 strings using `h`.
|
|
- JSON API: `sendpay` parameter `description` and `waitsendpay` and `sendpay` output fields `description` (now `label`).
|
|
- JSON API: `listpayments` has been deprecated (you probably want `listpays`)
|
|
|
|
### Removed
|
|
|
|
- JSON API: the `waitsendpay` command error return no longer includes `channel_update`
|
|
|
|
### Fixed
|
|
|
|
- Protocol: handling `query_channel_range` for 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.
|
|
- `riskfactor` arguments to `pay` and `getroute` now 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 named by @molxyz and [@ctrlbreak](https://twitter.com/ctrlbreak).
|
|
|
|
### Added
|
|
|
|
- JSON API: New command `check` checks the validity of a JSON API call without running it.
|
|
- JSON API: `getinfo` now returns `num_peers` `num_pending_channels`,
|
|
`num_active_channels` and `num_inactive_channels` fields.
|
|
- JSON API: use `\n\n` to terminate responses, for simplified parsing (pylightning now relies on this)
|
|
- JSON API: `fundchannel` now includes an `announce` option, when false it will keep channel private. Defaults to true.
|
|
- JSON API: `listpeers`'s `channels` now includes a `private` flag to indicate if channel is announced or not.
|
|
- JSON API: `invoice` route hints may now include private channels if you have no public ones, unless new option `exposeprivatechannels` is false.
|
|
- Plugins: experimental plugin support for `lightningd`, including option passthrough and JSON-RPC passthrough.
|
|
|
|
### Changed
|
|
|
|
- JSON API: `pay` and `decodepay` accept and ignore `lightning:` prefixes.
|
|
- pylightning: Allow either keyword arguments or positional arguments.
|
|
- JSON-RPC: messages are now separated by 2 consecutive newlines.
|
|
- JSON-RPC: `jsonrpc`:`2.0` now 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_fee` before `funding_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 `--prefix` as handed to `./configure`
|
|
|
|
### Security
|
|
|
|
|
|
## [0.6.2] - 2018-10-20: "The Consensus Loving Nasal Daemon"
|
|
|
|
This release named by practicalswift.
|
|
|
|
### Added
|
|
|
|
- JSON API: `listpeers` has new field `scratch_txid`: the latest tx in channel.
|
|
- JSON API: `listpeers` has new array `htlcs`: the current live payments.
|
|
- JSON API: `listchannels` has two new fields: `message_flags` and `channel_flags`. This replaces `flags`.
|
|
- JSON API: `invoice` now adds route hint to invoices for incoming capacity (RouteBoost), and warns if insufficient capacity.
|
|
- JSON API: `listforwards` lists all forwarded payments, their associated channels, and fees.
|
|
- JSON API: `getinfo` shows forwarding fees earnt as `msatoshi_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_msat` channel_update field.
|
|
|
|
### Changed
|
|
|
|
- Protocol: `channel_update` sent to disable channel only if we reject an HTLC.
|
|
- Protocol: we don't send redundant `node_announcement` on every new channel.
|
|
- Config: config file can override `lightning-dir` (makes sense with `--conf`).
|
|
- Config: `--conf` option is now relative to current directory, not `lightning-dir`.
|
|
- lightning-cli: `help <cmd>` prints basic information even if no man page found.
|
|
- JSON API: `getinfo` now 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`' `flags` field. This has been split into two fields, see Added.
|
|
- JSON RPC: `global_features` and `local_features` fields: use `globalfeatures` and `localfeatures` as per BOLT #1.
|
|
|
|
### Removed
|
|
|
|
- JSON API: the optional 'seed' parameter to `getroute` was removed.
|
|
|
|
### Fixed
|
|
|
|
- Startup: more coherent complaint if daemon already running.
|
|
- Lightningd: correctly save full HTLCs across restarts; fixup old databases.
|
|
- JSON RPC: `getinfo` now shows correct Tor port.
|
|
- JSON RPC: `ping` now works even after one peer fails to respond.
|
|
- JSON RPC: `getroute` `fuzzpercent` and `pay` `maxfeepercent` can now be > 100.
|
|
- JSON RPC: `riskfactor` in `pay` and `getroute` no longer always treated as 1.
|
|
- JSON-RPC: `listpeers` was always reporting 0 for all stats.
|
|
- JSON RPC: `withdraw all` says `Cannot afford transaction` if you have
|
|
absolutely no funds, rather than `Output 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_announcement` when 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_protect` now supported to protect peers
|
|
against being out-of-date.
|
|
- JSON API: Added description to invoices and payments (#1740).
|
|
- JSON API: `getinfo` has new fields `alias` and `color`.
|
|
- JSON API: `listpeers` has new fields `global_features` and `local_features`.
|
|
- JSON API: `listnodes` has new field `global_features`.
|
|
- JSON API: `ping` command to send a ping to a connected peer.
|
|
- JSON API: `feerates` command to retrieve current fee estimates.
|
|
- JSON API: `withdraw` and `fundchannel` can be given manual feerate.
|
|
- Config: `--conf` option to set config file.
|
|
- Documentation: Added CHANGELOG.md
|
|
- pylightning: RpcError now has `method` and `payload` fields.
|
|
- 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
|
|
`man` command.
|
|
- 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_connectd` handles connecting
|
|
to/from peers, instead of `gossipd` doing that itself. `lightning_openingd` now
|
|
handles peers immediately, even if they never actually open a channel.
|
|
- Test: `python-xdist` is 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_msat` parameter (#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 `feerate` arg.
|
|
|
|
### Deprecated
|
|
|
|
### Removed
|
|
|
|
- JSON API: `listpeers` results no long have `alias` and `color` fields;
|
|
they're in `listnodes` (we used to internally merge the information).
|
|
- JSON API: `listpeers` will never have `state` field (it accidentally
|
|
used to exist and set to `GOSSIPING` before we opened a channel).
|
|
`connected` will indicate if we're connected, and the `channels`
|
|
array indicates individual channel states (if any).
|
|
- Config: `default-fee-rate` is no longer available; use explicit `feerate`
|
|
option if necessary.
|
|
- Removed all Deprecated options from 0.6.
|
|
|
|
### Fixed
|
|
|
|
- Protocol: `node_announcement` multiple 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 prints `addresses` if more than
|
|
one is advertised.
|
|
- Config: `bind-addr` of a publicly accessible network address was announced.
|
|
- When we reconnect and have to retransmit failing HTLCs, the errors weren't
|
|
encrypted by us.
|
|
- `lightningd_config` man page is now installed by `make 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_update` inside error messages now refers to correct channel.
|
|
- Stripping type prefix from `channel_update`s 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`. Use `addr=:<portnum>`.
|
|
- Config: `ipaddr`. Use `addr`.
|
|
- Config: `anchor-confirms`. Use `funding-confirms`.
|
|
- Config: `locktime-blocks`. Use `watchtime-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: `listinvoice` command. Use `listinvoices`.
|
|
- JSON API: invoice result fields `paid_timestamp` and `expiry_time`. Use
|
|
`paid_at` and `expires_at`.
|
|
- JSON API: `invoice` command field `fallback`. Use `fallbacks`.
|
|
- JSON API: `decodepay` result fields `timestamp` and `fallback`. Use
|
|
`created_at` and `fallbacks`.
|
|
- JSON API: payment result fields `timestamp`. Use `created_at`.
|
|
- JSON API: `getinfo` result field `port`. Use `binding` and `address` arrays.
|
|
- JSON API: `getlog` result field `creation_time`. Use `created_at`.
|
|
- JSON API: `getpeers` result field `channel_reserve_satoshis`. Use `their_channel_reserve_satoshis`.
|
|
- JSON API: `getpeers` result field `to_self_delay`. Use `their_to_self_delay`.
|
|
|
|
## Older versions
|
|
|
|
There predate the BOLT specifications, and are only of vague historic interest:
|
|
|
|
1. [0.1] - 2015-08-08: "MtGox's Cold Wallet" (named by Rusty Russell)
|
|
2. [0.2] - 2016-01-22: "Butterfly Labs' Timely Delivery" (named by Anthony Towns)
|
|
3. [0.3] - 2016-05-25: "Nakamoto's Genesis Coins" (named by Braydon Fuller)
|
|
4. [0.4] - 2016-08-19: "Wright's Cryptographic Proof" (named by Chrstian Decker)
|
|
5. [0.5] - 2016-10-19: "Bitcoin Savings & Trust Daily Interest" (named by Glenn Willen)
|
|
6. [0.5.1] - 2016-10-21
|
|
7. [0.5.2] - 2016-11-21: "Bitcoin Savings & Trust Daily Interest II"
|
|
|
|
[0.7.0]: https://github.com/ElementsProject/lightning/compare/v0.6.3...HEAD
|
|
[0.6.3]: https://github.com/ElementsProject/lightning/releases/tag/v0.6.3
|
|
[0.6.2]: https://github.com/ElementsProject/lightning/releases/tag/v0.6.2
|
|
[0.6.1]: https://github.com/ElementsProject/lightning/releases/tag/v0.6.1
|
|
[0.6]: https://github.com/ElementsProject/lightning/releases/tag/v0.6
|
|
[0.5.2]: https://github.com/ElementsProject/lightning/releases/tag/v0.5.2-2016-11-21
|
|
[0.5.1]: https://github.com/ElementsProject/lightning/releases/tag/v0.5.1-2016-10-21
|
|
[0.5]: https://github.com/ElementsProject/lightning/releases/tag/v0.5-2016-10-19
|
|
[0.4]: https://github.com/ElementsProject/lightning/releases/tag/v0.4-2016-08-19
|
|
[0.3]: https://github.com/ElementsProject/lightning/releases/tag/v0.3-2016-05-26
|
|
[0.2]: https://github.com/ElementsProject/lightning/releases/tag/v0.2-2016-01-22
|
|
[0.1]: https://github.com/ElementsProject/lightning/releases/tag/v0.1-2015-08-08
|