mirror of
https://github.com/aljazceru/lightning.git
synced 2026-01-06 15:44:21 +01:00
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>
This commit is contained in:
16
pkt.h
16
pkt.h
@@ -87,24 +87,30 @@ struct pkt *close_channel_complete_pkt(const tal_t *ctx,
|
||||
* @ctx: tal context to allocate off.
|
||||
* @revocation_hash: the revocation hash for the next tx.
|
||||
* @delta: the change in satoshis (to me).
|
||||
* @sig: the signature for the close transaction input.
|
||||
*/
|
||||
struct pkt *update_pkt(const tal_t *ctx,
|
||||
const struct sha256 *revocation_hash,
|
||||
s64 delta, struct signature *sig);
|
||||
s64 delta);
|
||||
|
||||
/**
|
||||
* update_accept_pkt - create an update_accept message
|
||||
* @ctx: tal context to allocate off.
|
||||
* @sig: the signature for the close transaction input.
|
||||
* @revocation_hash: hash to revoke the next tx.
|
||||
* @revocation_preimage: preimage to revoke existing (now-obsolete) tx.
|
||||
*/
|
||||
struct pkt *update_accept_pkt(const tal_t *ctx,
|
||||
struct signature *sig,
|
||||
const struct sha256 *revocation_hash,
|
||||
const struct sha256 *revocation_preimage);
|
||||
const struct sha256 *revocation_hash);
|
||||
|
||||
/**
|
||||
* update_signature_pkt - create an update_signature message
|
||||
* @ctx: tal context to allocate off.
|
||||
* @sig: the signature for the close transaction input.
|
||||
* @revocation_preimage: preimage to revoke existing (now-obsolete) tx.
|
||||
*/
|
||||
struct pkt *update_signature_pkt(const tal_t *ctx,
|
||||
const struct signature *sig,
|
||||
const struct sha256 *revocation_preimage);
|
||||
/**
|
||||
* update_complete_pkt - create an update_accept message
|
||||
* @ctx: tal context to allocate off.
|
||||
|
||||
Reference in New Issue
Block a user