Browse Source
Written by Christian Decker wth feedback from Shannon Appelcline. Special thanks to Fabrice Drouin of ACINQ fame for choosing the release name!ppa-0.6.1
Rusty Russell
7 years ago
committed by
Christian Decker
2 changed files with 110 additions and 1 deletions
@ -0,0 +1,109 @@ |
|||||
|
# Release Announce for 0.6 |
||||
|
## a.k.a. "I Accidentally The Smart Contract" |
||||
|
|
||||
|
The long wait is over: we, the c-lightning team, are excited to announce the 0.6 release of |
||||
|
[c-lightning][clightning], an important milestone for the project. This complete rewrite of the previous implementation is the first fully specification-compilation release of c-lightning. It migrates away from the protocol used while designing the specification and toward a new architecture that is modular and extensible, to better adapt to your needs and your infrastructure. |
||||
|
|
||||
|
## New Features |
||||
|
|
||||
|
While there are far too many new features in the 0.6 release to list, the following are the most interesting and impactful: |
||||
|
|
||||
|
- __Lightweight nodes__: Previous releases required a full `bitcoind` node |
||||
|
running alongside c-lightning, to provide access to the Bitcoin network. This release still requires the `bitcoin-cli` utility to be present, but it |
||||
|
can now talk to remote nodes as well, including some lightweight nodes such |
||||
|
as [`spruned`][spruned]. This makes it possible to run a c-lightning node on |
||||
|
Raspberry Pis as well as other low-powered devices. |
||||
|
- The __gossip protocol__ has been updated to use a more lightweight bandwidth mechanism that |
||||
|
asks for specific information, rather than exchanging full network |
||||
|
Views as the previous release did. This is particular important for low-powered and mobile devices that |
||||
|
would otherwise spend a lot of bandwidth and energy downloading and |
||||
|
verifying information they already have. |
||||
|
- __API stability__: The c-lightning |
||||
|
JSON-RPC interface and supporting libraries have been redesigned in order to minimize |
||||
|
changes in future releases. This API stability should make it easy for other |
||||
|
projects to build on top of c-lightning because we will support this version of |
||||
|
the API for the foreseeable future, maintaining backward compatibility, |
||||
|
should we introduce any changes. |
||||
|
- __Wallet and sync__: c-lightning now includes a full-fledged wallet that |
||||
|
manages both on-chain and off-chain funds. There is no more raw |
||||
|
transaction handling! All funds are automatically tracked and returned to the |
||||
|
internal wallet as soon as possible, with no user interaction required. In |
||||
|
addition the blockchain tracking now maintains an internal view of the blockchain, ending long blockchain rescans. |
||||
|
- __TOR support__: c-lightning now supports connecting to nodes over the |
||||
|
TOR network, auto-registering as a hidden service, and accepting |
||||
|
incoming connections over TOR. |
||||
|
- The __payment logic__ has undergone a major overhaul to support automatic retries |
||||
|
for routing failures, randomization of route selection, and better feedback about |
||||
|
the current state of a payment. |
||||
|
- And as always: performance, performance, performance. |
||||
|
|
||||
|
## Flexibility through Modularity |
||||
|
|
||||
|
The c-lightning architecture is based on a number of independent communicating |
||||
|
processes, each with its own responsibilities. This allows better integration into |
||||
|
your infrastructure and better adaptation to your needs. Two |
||||
|
daemons that are global for all channels,`gossipd` and `hsmd`, are of particular note because of their modular design |
||||
|
|
||||
|
`gossipd` manages a local view of the network and is tasked with finding a path |
||||
|
from the source of a payment to its destination. The default implementation |
||||
|
attempts to find a route with reasonable tradeoffs between fees, timeouts, and |
||||
|
stability. It also obfuscates the route by selecting randomly among a |
||||
|
number of candidate routes and tweaking the amounts and timeouts in order to |
||||
|
conceal the endpoints of a payment. The default implementation can easily be |
||||
|
switched out if you have particular routing requirements or want to |
||||
|
enforce a specific routing policy, such as always selecting the route with the lowest |
||||
|
timeouts or the lowest fees. |
||||
|
|
||||
|
`hsmd` manages all operations that touch cryptographic materials and controls |
||||
|
the funds in the channel. It is the sole subsystem that has access to the node's |
||||
|
private key. This means that other subsystems do not hold any private |
||||
|
information and must communicate with the `hsmd` daemon to sign or decrypt |
||||
|
anything. Centralizing the cryptographic operations in this manner reduces the |
||||
|
surface that needs to be secured and opens up a number of interesting |
||||
|
applications. While the default `hsmd` implementation already provides good |
||||
|
security through process separation and the ability to further secure it via OS |
||||
|
level security, e.g., SELinux and AppArmor, it can be easily replaced with an implementation that talks to a physical HSM. Replacing the `hsmd` |
||||
|
implementation furthermore allows headless operation, e.g., running a |
||||
|
c-lightning node at home, with a paired mobile app managing the private keys |
||||
|
and initiating payments or creating invoices. |
||||
|
|
||||
|
This separation of c-lightning functionality into multiple daemons is not only a big |
||||
|
improvement in flexibility, but also a robust improvement to node security, as it ensures that an attacker cannot directly |
||||
|
interface with anything that touches the private keys. Each subsystem |
||||
|
independently verifies the consistency of the internal state, disconnecting a |
||||
|
peer and killing its process if any inconsistency is detected. The multi-daemon |
||||
|
architecture also enables the use of Docker, SELinux and AppArmor to lock down |
||||
|
what information each daemon can access and what actions they can perform. |
||||
|
|
||||
|
## What's Next? |
||||
|
|
||||
|
Our work with c-lightning is far from done; we are constantly working on |
||||
|
[features][features] and [enhancements][enhancements], as well as improvements to |
||||
|
performance, stability and usability. Didn’t find your favorite feature? Have |
||||
|
some feedback that might be helpful? Why not file an [issue on |
||||
|
Github][gh-issue], drop us a line on the [mailing list][ml], or [contact us on |
||||
|
IRC][irc]. |
||||
|
|
||||
|
In parallel we are also contributing to the advancement of the Lightning specification |
||||
|
itself and are actively researching what the next iteration of the protocol could |
||||
|
look like through initiatives like our [eltoo][eltoo] proposal and upstream |
||||
|
Bitcoin proposals such as [`SIGHASH_NOINPUT`][sighash-noinput]. |
||||
|
|
||||
|
We'd like to thank the many contributors who have not only contributed code to |
||||
|
c-lightning, but also those who were #reckless enough to test and give feedback |
||||
|
about what works and what could be improved. And finally, we'd like to thank the |
||||
|
other Lightning Network teams, ACINQ and Lightning Labs, as well as all individual contributors |
||||
|
that pitched in to make the Lightning Network community such a pleasant, collaborative and open |
||||
|
environment! |
||||
|
|
||||
|
[spruned]: https://github.com/gdassori/spruned |
||||
|
[clightning]: https://github.com/ElementsProject/lightning |
||||
|
[features]: https://github.com/ElementsProject/lightning/issues?q=is%3Aissue+is%3Aopen+label%3Afeature |
||||
|
[enhancements]: https://github.com/ElementsProject/lightning/issues?q=is%3Aissue+is%3Aopen+label%3Aenhancement |
||||
|
[irc]: irc://c-lightning@irc.freenode.net |
||||
|
[ml]: mailto:c-lightning@lists.ozlabs.org |
||||
|
[gh-issue]: https://github.com/ElementsProject/lightning/issues/new |
||||
|
[sighash-noinput]: https://github.com/bitcoin/bips/blob/master/bip-0118.mediawiki |
||||
|
[eltoo]: https://blockstream.com/2018/04/30/eltoo-next-lightning.html |
||||
|
|
||||
|
|
Loading…
Reference in new issue