| 46 | } |
| 47 | |
| 48 | int main(int argc, char *argv[]) |
| 49 | { |
| 50 | struct pubkey funding_pubkey[NUM_SIDES], outkey[NUM_SIDES]; |
| 51 | struct privkey funding_privkey[NUM_SIDES]; |
| 52 | struct amount_sat funding_amount; |
| 53 | struct bitcoin_outpoint funding; |
| 54 | u32 feerate_per_kw; |
| 55 | struct amount_sat fee; |
| 56 | struct bitcoin_signature local_sig, remote_sig; |
| 57 | struct amount_msat local_msat, remote_msat; |
| 58 | int argnum, num_outputs; |
| 59 | struct bitcoin_tx *tx; |
| 60 | u8 **witness; |
| 61 | const u8 *funding_wscript; |
| 62 | const struct chainparams *chainparams = chainparams_for_network("bitcoin"); |
| 63 | const struct amount_sat dust_limit = AMOUNT_SAT(546); |
| 64 | bool option_anchor_outputs = false; |
| 65 | |
| 66 | setup_locale(); |
| 67 | |
| 68 | secp256k1_ctx = secp256k1_context_create(SECP256K1_CONTEXT_VERIFY | |
| 69 | SECP256K1_CONTEXT_SIGN); |
| 70 | |
| 71 | if (argv[1] && streq(argv[1], "-v")) { |
| 72 | verbose = true; |
| 73 | argv++; |
| 74 | argc--; |
| 75 | } |
| 76 | |
| 77 | if (argc != 10) |
| 78 | errx(1, "Usage: mkclose [-v] <funding-txid> <funding-txout> <funding-amount> <feerate-per-kw> <local-msat> <local-funding-privkey> <remote-funding-privkey> <local-close-pubkey> <remote-close-pubkey>\n" |
| 79 | "(Fee is deducted from local-msat)"); |
| 80 | |
| 81 | argnum = 1; |
| 82 | if (!bitcoin_txid_from_hex(argv[argnum], |
| 83 | strlen(argv[argnum]), &funding.txid)) |
| 84 | errx(1, "Bad funding-txid"); |
| 85 | argnum++; |
| 86 | funding.n = atoi(argv[argnum++]); |
| 87 | if (!parse_amount_sat(&funding_amount, argv[argnum], strlen(argv[argnum]))) |
| 88 | errx(1, "Bad funding-amount"); |
| 89 | argnum++; |
| 90 | feerate_per_kw = atoi(argv[argnum++]); |
| 91 | if (!parse_amount_msat(&local_msat, |
| 92 | argv[argnum], strlen(argv[argnum]))) |
| 93 | errx(1, "Bad local-msat"); |
| 94 | argnum++; |
| 95 | if (!hex_decode(argv[argnum], strlen(argv[argnum]), |
| 96 | &funding_privkey[LOCAL], sizeof(funding_privkey[LOCAL]))) |
| 97 | errx(1, "Parsing local-funding_privkey"); |
| 98 | argnum++; |
| 99 | if (!hex_decode(argv[argnum], strlen(argv[argnum]), |
| 100 | &funding_privkey[REMOTE], sizeof(funding_privkey[REMOTE]))) |
| 101 | errx(1, "Parsing remote-funding_privkey"); |
| 102 | argnum++; |
| 103 | if (!pubkey_from_hexstr(argv[argnum], strlen(argv[argnum]), |
| 104 | &outkey[LOCAL])) |
| 105 | errx(1, "Parsing local-close-pubkey"); |
nothing calls this directly
no test coverage detected