mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-22 08:34:20 +01:00
check-anchor-scriptsigs: don't require txs.
It's convenient to double-check that commit txs spend anchor, but it's misleading since we wouldn't have access to the other side's tx, and in practice we wouldn't even sign ours until we need it. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
/* My example:
|
/* My example:
|
||||||
* ./check-anchor-scriptsigs A-open.pb B-open.pb A-anchor-scriptsigs.pb B-anchor-scriptsigs.pb A-commit.tx B-commit.tx > A-anchor.tx
|
* ./check-anchor-scriptsigs A-open.pb B-open.pb A-anchor-scriptsigs.pb B-anchor-scriptsigs.pb > A-anchor.tx
|
||||||
* ./check-anchor-scriptsigs B-open.pb A-open.pb B-anchor-scriptsigs.pb A-anchor-scriptsigs.pb B-commit.tx A-commit.tx > B-anchor.tx
|
* ./check-anchor-scriptsigs B-open.pb A-open.pb B-anchor-scriptsigs.pb A-anchor-scriptsigs.pb > B-anchor.tx
|
||||||
*/
|
*/
|
||||||
#include <ccan/crypto/shachain/shachain.h>
|
#include <ccan/crypto/shachain/shachain.h>
|
||||||
#include <ccan/short_types/short_types.h>
|
#include <ccan/short_types/short_types.h>
|
||||||
@@ -27,7 +27,7 @@ int main(int argc, char *argv[])
|
|||||||
const tal_t *ctx = tal_arr(NULL, char, 0);
|
const tal_t *ctx = tal_arr(NULL, char, 0);
|
||||||
OpenChannel *o1, *o2;
|
OpenChannel *o1, *o2;
|
||||||
OpenAnchorScriptsigs *ss1, *ss2;
|
OpenAnchorScriptsigs *ss1, *ss2;
|
||||||
struct bitcoin_tx *anchor, *commit1, *commit2;
|
struct bitcoin_tx *anchor;
|
||||||
struct sha256_double txid;
|
struct sha256_double txid;
|
||||||
u8 *tx_arr;
|
u8 *tx_arr;
|
||||||
size_t *inmap, *outmap;
|
size_t *inmap, *outmap;
|
||||||
@@ -36,13 +36,13 @@ int main(int argc, char *argv[])
|
|||||||
err_set_progname(argv[0]);
|
err_set_progname(argv[0]);
|
||||||
|
|
||||||
opt_register_noarg("--help|-h", opt_usage_and_exit,
|
opt_register_noarg("--help|-h", opt_usage_and_exit,
|
||||||
"<open-channel-file1> <open-channel-file2> <anchor-sig2-1> <anchor-sigs2> <commit-tx1> <commit-tx2>\n"
|
"<open-channel-file1> <open-channel-file2> <anchor-sig2-1> <anchor-sigs2>\n"
|
||||||
"Output the anchor transaction by merging the scriptsigs",
|
"Output the anchor transaction by merging the scriptsigs",
|
||||||
"Print this message.");
|
"Print this message.");
|
||||||
|
|
||||||
opt_parse(&argc, argv, opt_log_stderr_exit);
|
opt_parse(&argc, argv, opt_log_stderr_exit);
|
||||||
|
|
||||||
if (argc != 7)
|
if (argc != 5)
|
||||||
opt_usage_exit_fail("Expected 6 arguments");
|
opt_usage_exit_fail("Expected 6 arguments");
|
||||||
|
|
||||||
o1 = pkt_from_file(argv[1], PKT__PKT_OPEN)->open;
|
o1 = pkt_from_file(argv[1], PKT__PKT_OPEN)->open;
|
||||||
@@ -51,8 +51,6 @@ int main(int argc, char *argv[])
|
|||||||
->open_anchor_scriptsigs;
|
->open_anchor_scriptsigs;
|
||||||
ss2 = pkt_from_file(argv[4], PKT__PKT_OPEN_ANCHOR_SCRIPTSIGS)
|
ss2 = pkt_from_file(argv[4], PKT__PKT_OPEN_ANCHOR_SCRIPTSIGS)
|
||||||
->open_anchor_scriptsigs;
|
->open_anchor_scriptsigs;
|
||||||
commit1 = bitcoin_tx_from_file(ctx, argv[5]);
|
|
||||||
commit2 = bitcoin_tx_from_file(ctx, argv[6]);
|
|
||||||
|
|
||||||
anchor = anchor_tx_create(ctx, o1, o2, &inmap, &outmap);
|
anchor = anchor_tx_create(ctx, o1, o2, &inmap, &outmap);
|
||||||
if (!anchor)
|
if (!anchor)
|
||||||
@@ -62,13 +60,6 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
bitcoin_txid(anchor, &txid);
|
bitcoin_txid(anchor, &txid);
|
||||||
|
|
||||||
/* Now check that the txid is spent by the commitment txs we created */
|
|
||||||
assert(commit1->input_count == 1 && commit2->input_count == 1);
|
|
||||||
if (!structeq(&txid, &commit1->input[0].txid))
|
|
||||||
errx(1, "%s doesn't spend this anchor", argv[5]);
|
|
||||||
if (!structeq(&txid, &commit2->input[0].txid))
|
|
||||||
errx(1, "%s doesn't spend this anchor", argv[6]);
|
|
||||||
|
|
||||||
/* Print it out in hex. */
|
/* Print it out in hex. */
|
||||||
tx_arr = linearize_tx(ctx, anchor);
|
tx_arr = linearize_tx(ctx, anchor);
|
||||||
tx_hex = tal_arr(tx_arr, char, hex_str_size(tal_count(tx_arr)));
|
tx_hex = tal_arr(tx_arr, char, hex_str_size(tal_count(tx_arr)));
|
||||||
|
|||||||
Reference in New Issue
Block a user