lnd version, "hacked" to enable seedless restore from xprv + scb
Go to file
Olaoluwa Osuntokun 4c8b10617a add lnAddr implementation to peer.go, finish peer draft
* With this commit, then initial draft of the peer struct is finished.
Items to still complete include the interaction between the peer and
internal wallet, version handshake, pings, etc.
2016-01-16 19:26:49 -08:00
chainntfs update imports to github 2016-01-16 10:45:54 -08:00
channeldb update imports to github 2016-01-16 10:45:54 -08:00
cmd update imports to github 2016-01-16 10:45:54 -08:00
elkrem move elkrem, uspv libs to plasma repo 2016-01-14 23:58:05 -08:00
lndc lndc: restore new implementation of land 2016-01-16 19:25:44 -08:00
lnrpc lnrpc: re-build proto files 2016-01-14 23:55:45 -08:00
lnstate update imports to github 2016-01-16 10:45:54 -08:00
lnwallet update imports to github 2016-01-16 10:45:54 -08:00
lnwire Cleanup comments & removed notes on escrow 2016-01-16 17:14:35 -08:00
shachain shachain: revocation hashes are now hash160's 2016-01-14 23:56:08 -08:00
uspv spv sync works but more to add 2016-01-15 02:40:56 -08:00
.gitignore update imports to github 2016-01-16 10:45:54 -08:00
config.go add some daemon related skeleton files 2015-12-26 00:09:17 -06:00
doc.go add some daemon related skeleton files 2015-12-26 00:09:17 -06:00
LICENSE add copyright, license and discouragement in readme 2016-01-16 00:13:11 -08:00
lnd.go start http profiling server by default 2016-01-16 19:26:04 -08:00
log.go add some daemon related skeleton files 2015-12-26 00:09:17 -06:00
omnihandler.go change imports to github.com/lightningnetwork/lnd 2016-01-16 10:38:48 -08:00
peer_test.go plasma: rough draft of peer struct 2015-12-20 15:16:38 -06:00
peer.go add lnAddr implementation to peer.go, finish peer draft 2016-01-16 19:26:49 -08:00
README.md README.md: Clarified normalized/segwit & stuff 2016-01-16 10:45:11 -08:00
rpcserver.go revert to testnet3 params 2016-01-16 11:11:43 -08:00
server.go change imports to github.com/lightningnetwork/lnd 2016-01-16 10:38:48 -08:00

lnd - Lightning Network Daemon

This repo is preliminary work on a lightning network peer-to-peer node and wallet.

It currently is being designed for testnet-L, a test network where all txids are normalized. The plan is to eventually use the agreed longer-term solution (segwit?), but we want to not be concerned with updates to segwit, so we're running with this. Normalized txids fixes malleability but isn't something that will/can be integrated to the existing bitcoin network cleanly (so it's a good way to ensure testing-only before segwit is finalized, which solves the problem too).

This version of Lnd is not yet fully-operational, but a proof of concept on testnet-L will likely exist soon. The projection is it will be operational before necessary the necessary malleabilty soft-forks are into bitcoin mainnet (may be significantly before if there are any delays in mainnet malleability fix).

Don't try to port it to mainnet or an altcoin and use it today! No really. Lightning transactions will be fast, but for now, please wait just a little bit.

chainntfs

A package centered around a generic interface for receiving transaction/confirmation based notifications concerning the blockchain. Such notifications are required in order for pending payment channels to be notified once the funding transaction gains a specified number of confirmations, and in order to catch a counter-party attempting a non-cooperative close using a past commitment transaction to steal funds.

At the moment, it only has a single concrete implementation: using btcd's websockets notifications. However, more implementations of the interface are planned, such as electrum, polling via JSON-RPC, Bitcoin Core's ZeroMQ notifications, and more.

channeldb

lnd's primary datastore. It uses a generic interface defined in walletdb allowing for usage of any sotrage backend which adheres to the interface. The current concrete implementation used is driven by bolt. channeldb is responsible for storing state such as meta-data concerning the current open channels, closed channels, past routes we used, fee schedules within the network, and information about remote peers (ID, uptime, reputation, etc).

cmd / lncli

A command line to query and control a running lnd. Similar to bitcoin-cli

cmd / lnshell

Interactive shell for commands to direct the lnd node. Will probably be merged into lnd soon as a command line option.

elkrem

Library to send and receive a tree structure of hashes which can be sequentially revealed. If you want to send N secrets, you only need to send N secrets (no penalty there) but the receiver only needs to store log2(N) hashes, and can quickly compute any previous secret from those.

This is useful for the hashed secrets in LN payment channels.

lndc

Library for authenticated encrypted communication between LN nodes. It uses chacha20_poly1305 for the symmetric cipher, and the secp256k1 curve used in bitcoin for public keys. No signing is used, only two ECDH calculations: first with ephemeral keypairs and second with persistent identifying public keys.

lnstate

In-progress update which improves current implementation of channel state machine to allow for higher throughput.

lnwallet

An application specific, yet general Bitcoin wallet which understands all the fancy script, and transaction formats needed to transact on the Lightning Network. The interface, and interaction with the core wallet logic has been designed independent of any peer-to-peer communication. The goal is to make lnwallet self-contained, and easily embeddable within future projects interacting with the Lightning Network. The current state machine for channel updates is blocking, only allowing one pending update at a time. This will soon be replaced in favor of the highly concurrent, non-blocking state machine within lnstate.

lnwire

Library of messages for Lightning Network node to node communcations. Messages for opening and closing channels, as well as updating and revoking channel states are described here.

shachain

An implementation of Rusty Russel's 64-dimensional shachain.

uspv

Wallet library to connect to bitcoin nodes and build a local SPV and wallet transaction state.