Pre-release

@Roasbeef Roasbeef released this Oct 12, 2017 · 1559 commits to master since this release

Assets 7

This release marks the first release of the Lightning desktop application! The application comes pre-bundled with lnd at commit lightningnetwork/lnd@f20cb89. As there're a a few breaking changes planned for lnd, subsequent release will be frequent in order to keep up with the latest network protocol. As a result, the builds contained within the application won't be able to properly interact with the network after a two week period has passed. As lnd itself is still in alpha, this application will only track Lightning on Bitcoin's testnet blockchain.

Notable Features

Neutrino

The app is powered by neutrino, our new open source, light client operating mode for Bitcoin. Neutrino light clients don't rely on bloom filters (BIP 37) as most light clients currently do. Instead, neutrino relies on client side filtering which has numerous benefits including: increased privacy, less active load on full nodes, and a more flexible application model which is particularly useful for lightweight Lighting nodes. The full technical details for neutrino can be found in our soon to be finalized BIP draft.

With this new backend for lnd in place, users will be able to run Lightning applications without having a synced full node, reducing the barrier to entry for Lightning users.

Autopilot

The latest build of lnd comes equipped with a new experimental option for any planned flavors of automatic channel management, meaning users won't necessarily need to manually establish channels. We call this new operating node autopilot as it will automatically manage the opening of channels within the network.

autopilot is essentially a closed-loop control system: it takes inputs such as the number of channels opened, time when channels are closed, and changes to the wallet's balance. Once those signals are received, it consults a set of heuristic to decide if it needs more channels, and if so, to whom those channels should be opened. The Agent then carries out the recommendations of its heuristics.

BOLT 11

For sending/receiving funds over Lighting, the wallet implements BOLT-11 which defines an extensible invoicing protocol for Lightning payments. Using this encoding, a standard payment request to receive funds over Lightning looks like:

lntb4200n1pvaue4ypp5k86jth0zefkje0u88ftmp37rvy64p8fl5el7jla0cgn3av6nhmpsd8s0v3xzun5d93kce2ld9jzyw3zxy6nsefev93kyttp8psnwtf5xycrwttpxu6nyttz8p3rvv3jxpsnyerzxg3zcgnyv4ekxunfwp6xjmmwygazy5n9v9jzqstjw35kxmr98gs9y3f6yp28yctwwdskxarfdah8xgrpdejzq5mrwf5hqarn8gsyg42sypyyz56gxymrqgpw9chzq32324q5c4j92fy5vkfqgdyy2s6t2dy5wgnayhq8y6pw5957tqn374jczramqyzjr8f7vt7v3m2shtqgcnp9u538fv27zp2egju5uljscyuvul5n86kg0670zf68q4a09kcnzcyjgyqprd5d5p

If we go to the command line to decode the payment request, we'll see what's encoded:

$  lncli decodepayreq --pay_req=lntb4200n1pvaue4ypp5k86jth0zefkje0u88ftmp37rvy64p8fl5el7jla0cgn3av6nhmpsd8s0v3xzun5d93kce2ld9jzyw3zxy6nsefev93kyttp8psnwtf5xycrwttpxu6nyttz8p3rvv3jxpsnyerzxg3zcgnyv4ekxunfwp6xjmmwygazy5n9v9jzqstjw35kxmr98gs9y3f6yp28yctwwdskxarfdah8xgrpdejzq5mrwf5hqarn8gsyg42sypyyz56gxymrqgpw9chzq32324q5c4j92fy5vkfqgdyy2s6t2dy5wgnayhq8y6pw5957tqn374jczramqyzjr8f7vt7v3m2shtqgcnp9u538fv27zp2egju5uljscyuvul5n86kg0670zf68q4a09kcnzcyjgyqprd5d5p
{
    "destination": "028c620eb95c3907a779adf9c47612973b70c322e5b60a21886947867439ff63e6",
    "payment_hash": "b1f525dde2ca6d2cbf873a57b0c7c36135509d3fa67fe97fafc2271eb353bec3",
    "num_satoshis": "420",
    "timestamp": "1507747492",
    "expiry": "3600",
    "description": "{\"article_id\":\"158e9acb-a8a7-4107-a752-b8b6220a2db2\",\"description\":\"Read Article: RE: Transactions and Scripts: DUP HASH160 ... EQUALVERIFY CHECKSIG\"}",
    "description_hash": "",
    "fallback_addr": ""
}

Segwit Enabled

The Desktop App is fully segwit enabled, capable of sending funds to and receiving funds from native segwit addresses, which look like:

tb1q62cgd0u7h654rpu4fm9y4fe47x5khesyd9k2q9

Note that in the Desktop App, for incoming payments, we currently display nested P2SH addresses. This format is used so that non-segwit enabled services (such as faucets) can send funds to the wallet. For outgoing funds, the wallet will only send to segwit outputs in order to prevent new channels from being subject to transaction malleability. Testnet coins are available at faucets here and here.