Core Lightning — Lightning Network implementation focusing on spec compliance and performance
Go to file
Rusty Russell 6821b4f31c state: handle on-chain HTLCs.
When a unilateral close occurs, we have to watch on-chain ("live")
HTLCs.  If the other side spends their HTLC output, we need to grab
the rvalue.  If it times out, we need to spend it back to ourselves.
If we get an R value, we need to spend our own HTLC output back to
ourselves.

Because there are multiple HTLCs, this doesn't fit very neatly into a
state machine.  We divide into "have htlcs" and "don't have htlcs",
and use a INPUT_NO_MORE_HTLCS once all htlcs are resolved to transition.

Our test harness now tracks individual HTLCs, so we refined some
inputs (in particular, it won't try to complete/timeout an HTLC before
we have any).

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-09-25 11:51:18 +09:30
bitcoin bitcoin/script: don't pass value for HTLC script. 2015-09-24 14:56:01 +09:30
ccan CCAN: add cdump. 2015-09-25 11:51:18 +09:30
doc doc/deployable-lightning: point out that Fig 4 is simplified. 2015-09-15 04:23:25 +09:30
secp256k1 Import secp256k1 (schnorr version) 2015-07-01 16:27:52 +09:30
test test/test_state_coverage: more information in error trail. 2015-09-25 11:51:18 +09:30
test-cli protocol: rename update_complete_htlc to update_fulfill_htlc. 2015-09-25 11:51:18 +09:30
.gitignore Version number, name, and build details. 2015-08-08 20:45:49 +09:30
close_tx.c protocol: switch to single-funder anchor model. 2015-07-29 16:14:28 +09:30
close_tx.h protocol: switch to single-funder anchor model. 2015-07-29 16:14:28 +09:30
commit_tx.c protocol: increase HTLC precision to 1/1000 satoshi. 2015-09-24 15:00:47 +09:30
commit_tx.h channel_state: encapsulate funding of channel in one place. 2015-08-07 12:45:30 +09:30
find_p2sh_out.c Sort include lines (ignoring hacky cli test utils). 2015-06-12 12:41:28 +09:30
find_p2sh_out.h find_p2sh_out: extract helper. 2015-06-09 14:13:21 +09:30
funding.c protocol: increase HTLC precision to 1/1000 satoshi. 2015-09-24 15:00:47 +09:30
funding.h protocol: increase HTLC precision to 1/1000 satoshi. 2015-09-24 15:00:47 +09:30
LICENSE LICENSE: Make MIT licensing clear. 2015-06-12 13:30:39 +09:30
lightning.pb-c.c protocol: rename update_complete_htlc to update_fulfill_htlc. 2015-09-25 11:51:18 +09:30
lightning.pb-c.h protocol: rename update_complete_htlc to update_fulfill_htlc. 2015-09-25 11:51:18 +09:30
lightning.proto protocol: rename update_complete_htlc to update_fulfill_htlc. 2015-09-25 11:51:18 +09:30
Makefile test/test_state_coverage: output dot format. 2015-09-25 11:51:18 +09:30
opt_bits.c opt_bits: parsing routines for 'bits' == 100 satoshi. 2015-06-07 13:52:04 +09:30
opt_bits.h opt_bits: parsing routines for 'bits' == 100 satoshi. 2015-06-07 13:52:04 +09:30
overflows.h open-anchor-sig, many fixes for open-channel. 2015-05-29 10:51:16 +09:30
permute_tx.c permute: use BIP69 order. 2015-07-20 14:07:44 +09:30
permute_tx.h permute: use BIP69 order. 2015-07-20 14:07:44 +09:30
pkt.c protocol: rename update_complete_htlc to update_fulfill_htlc. 2015-09-25 11:51:18 +09:30
pkt.h protocol: split message update_remove_htlc into update_timedout_htlc and update_routefail_htlc, remove update_remove_htlc_delay. 2015-09-24 15:02:49 +09:30
protobuf_convert.c proto_to_locktime: abs and relative locktime handlers. 2015-08-07 12:45:30 +09:30
protobuf_convert.h proto_to_locktime: abs and relative locktime handlers. 2015-08-07 12:45:30 +09:30
README.md README.md: Note Elements requirement. 2015-07-03 14:03:45 +09:30
state_types.h state: handle on-chain HTLCs. 2015-09-25 11:51:18 +09:30
state.c state: handle on-chain HTLCs. 2015-09-25 11:51:18 +09:30
state.h state: handle on-chain HTLCs. 2015-09-25 11:51:18 +09:30
version.c Version number, name, and build details. 2015-08-08 20:45:49 +09:30
version.h Version number, name, and build details. 2015-08-08 20:45:49 +09:30

Strawman protocol for lightning channels.

The wire protocol is documented in lightning.proto (a protobuf definition file).

There are command line utilities to create and process various packets in test-cli.

It requires features not currently in bitcoin, so it runs on top of the sidechain Elements Alpha

This is very much a testbed and work in progress; expect All The Things to change, all the time.

Cheers,

Rusty.