Commit Graph

14417 Commits

Author SHA1 Message Date
Rusty Russell 69b2690ecb HOWTO-USE.md: use alpha instead of bitcoind for examples.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-07-03 13:39:27 +09:30
Rusty Russell f510e29e22 alpha: switch over to Elements Alpha by default.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-07-03 13:36:25 +09:30
Rusty Russell c660629760 test.sh: (alpha) make sure that spending tx fails too soon, succeeds after delay.
This only makes sense when we have CSV support.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-07-03 10:47:29 +09:30
Rusty Russell 4011f7ae7c create-commit-spend-tx: set alpha fields, and input locktime.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-07-03 10:45:43 +09:30
Rusty Russell 20bb6c65aa protocol fix: use locktime from *other* side.
Which emerged clearly when setting one side's locktime differently than
the other.

Each side specifies the (minimum) time they need to notice a fraud attempt:
this constrains the *other* side.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-07-03 10:44:49 +09:30
Rusty Russell 66b1df4036 tx: locktime should be 0.
It doesn't matter until we start setting sequence numbers properly,
so hasn't been noticed until now.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-07-03 10:44:44 +09:30
Rusty Russell 1075264c66 close_tx: initialize fee and input amount fields.
Required for alpha.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-07-01 16:55:11 +09:30
Rusty Russell 90e4160862 test.sh: handle appended amounts in transactions.
cut -d: -f1 gets just the transactions, or passed through if no ":".

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-07-01 16:55:11 +09:30
Rusty Russell ae31431168 tx: centralize transaction writing, append amounts for alpha.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-07-01 16:55:11 +09:30
Rusty Russell 5dc9cd16f9 create-steal-tx: actually output the steal tx, not the commit tx!
... Which reveals it wasn't paying a fee.  So update fix that, and
initialize the alpha tx fields while we're there.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-07-01 16:55:03 +09:30
Rusty Russell 9851436d4d test.sh: restore --steal and --unilateral options
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-07-01 16:27:52 +09:30
Rusty Russell 62a002c860 script: make DER for signature encoding optional.
Alpha does the sane thing, places signatures raw.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-07-01 16:27:52 +09:30
Rusty Russell faae91f3fc Schnorr signature support.
This variation is used by alpha.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-07-01 16:27:52 +09:30
Rusty Russell 1d82bf51fc signature: fix invalid S check.
The even-S check was based on https://github.com/sipa/bitcoin/commit/a81cd9680
which was replaced by a low-S check in commit e0e14e43d9586409e42919f6cb955540134cda2a

Abstract out and fix the check.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-07-01 16:27:52 +09:30
Rusty Russell d20ddb5a90 Use libsecp256k1 instead of openssl for crypto.
We still use openssl for bignums (base58) and for ripemd.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-07-01 16:27:52 +09:30
Rusty Russell 5a79ef9502 Import secp256k1 (schnorr version)
Imported from: git@github.com:sipa/secp256k1.git schnorr3 (0ab0b47)

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-07-01 16:27:52 +09:30
Rusty Russell fbe63124f6 Move DER encoding into bitcoin/signature.c
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-07-01 16:27:52 +09:30
Rusty Russell 20624c049f tx: prepare for Elements Alpha.
They sign, hash, and serialize differently.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-07-01 16:27:45 +09:30
Rusty Russell 27e7c7b986 scripts/setup.sh: setup helper script.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-06-30 12:58:49 +09:30
Rusty Russell 783aa35aa6 Make test.sh inputs script arguments.
Hardcoding my defaults isn't useful.  Even for me.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-06-30 12:54:48 +09:30
Rusty Russell f38382fd3c test.sh: handle variances in bitcoin-cli formatting.
In particular, there may or may not be a space between "pubkey" and :.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-06-30 12:34:35 +09:30
Rusty Russell 8f4426e09b scripts: move to scripts/ subdir, prepare for alpha.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-06-30 12:08:18 +09:30
Rusty Russell 61737a79d2 Fix typo.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-06-25 13:48:05 +09:30
Rusty Russell 4e9b0f1951 Actually commit the README.md.
Oops.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-06-24 16:19:00 +09:30
Rusty Russell 602117e8bb Add valgrind memcheck helpers.
Otherwise valgrind tells you when you test a hash; you want to
know if you hash uninitialized memory long before that.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-06-24 16:15:34 +09:30
Rusty Russell 143e7e032c Optimize revocable output a little.
Both paths do CHECKSIG, do that outside.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-06-23 16:05:09 +09:30
Rusty Russell 733e655d17 getinput.sh: abstract out bitcoin-cli command.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-06-23 16:03:14 +09:30
Rusty Russell 0666265b5e HOWTO-USE.md: poor documentation for poor tools.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-06-12 14:54:27 +09:30
Rusty Russell 98b1d478b1 test-cli: remove obsolete examples from program headers.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-06-12 14:38:48 +09:30
Rusty Russell d4a6fb8b2d Add test script.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-06-12 14:37:19 +09:30
Rusty Russell 924be8456e create-commit-spend-tx: fix locktime, take into account updates.
We were using o2's locktime instead of o1's, and we didn't take
into account updates.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-06-12 14:36:25 +09:30
Rusty Russell a700a5cdca create-commit-tx: allow creation of initial opening tx.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-06-12 14:32:48 +09:30
Rusty Russell fb036399eb LICENSE: Make MIT licensing clear.
ccan/opt is GPLv2, so the test-cli utils are GPLv2, but they're temporary.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-06-12 13:30:39 +09:30
Rusty Russell c91d2b5206 ccan: add local copy.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-06-12 13:29:06 +09:30
Rusty Russell 92ec2f874b pkt: add pkt_totlen() helper.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-06-12 13:06:33 +09:30
Rusty Russell 77387bb370 test-cli/create-commit-spend-tx: don't endian convert script_len.
That's done in mashalling and hashing code.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-06-12 13:06:33 +09:30
Rusty Russell 6389dbd455 protocol: restore locktime in blocks option.
This could be used by an always-on node to agressively shorten their timeouts.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-06-12 13:06:33 +09:30
Rusty Russell a0b621689e TAGS: Improve support.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-06-12 12:44:45 +09:30
Rusty Russell 9f12b72476 Don't include mutual redemption in recovable commit tx output.
It's not clear it's needed, and without it there's a good reason to
delay dumping to the blockchain if a node becomes unreachable (since
you'll get your money faster if it comes back online).

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-06-12 12:41:30 +09:30
Rusty Russell ef9463f6b1 Sort include lines (ignoring hacky cli test utils).
Put ccan first, openssl next, then standard headers, then locals.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-06-12 12:41:28 +09:30
Rusty Russell 4e8eda47a1 Move hacky command line utils out to test-cli subdir.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-06-12 12:35:42 +09:30
Rusty Russell 5776c7a9d8 Update .gitignore
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-06-12 12:35:42 +09:30
Rusty Russell 442f321585 Move protobuf<->bitcoin converters out of bitcoin/
They're lightning-specific.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-06-12 12:35:42 +09:30
Rusty Russell 612d713470 Move bitcoin stuff into bitcoin subdir.
It's not very interesting if you're looking for LN code.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-06-12 12:35:42 +09:30
Rusty Russell 28ea518182 create-steal-tx: use o1 to double-check final key is correct.
It's actually an unused parameter, but they symmetry with others in nice.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-06-12 12:35:41 +09:30
Rusty Russell 2d714f5ad4 create-commit-tx: create a commit tx.
Required for unilateral close.  Also lets us test stealing funds
from a revoked transaction.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-06-12 12:35:26 +09:30
Rusty Russell 96585e1b00 create-steal-tx: fix it.
Couldn't be tested until we could generate updates; fixed now.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-06-10 21:39:55 +09:30
Rusty Russell 975a5b2041 scriptsig_p2sh_2of2: fix sig order.
Must match key order, which we permute.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-06-10 21:39:55 +09:30
Rusty Russell ed3f0115d6 protocol: fix horribly thinko, keep own secrets.
I had each side using the other side's hash secret.  That's a very
dumb idea, since it means you can steal from a unilateral close!

A's secret applies to A's commit transaction: it needs the
secret and B's final signature to steal funds, and that should
never happen (since A doesn't have the B's final signature, and
once A has given B the secret, they never broadcast the commit tx).

This makes the update a 4 step dance, since you need the new
revocation hash to make the other side's TX to sign.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-06-10 21:39:45 +09:30
Rusty Russell 9caf2c71e8 close-channel / create-close-tx: take into account updates.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-06-09 14:29:04 +09:30