| 72 | } |
| 73 | |
| 74 | int main(int argc, char *argv[]) |
| 75 | { |
| 76 | struct privkey input_privkey; |
| 77 | struct privkey local_funding_privkey, remote_funding_privkey; |
| 78 | struct pubkey funding_localkey, funding_remotekey, inputkey; |
| 79 | struct amount_sat fee, funding_amount; |
| 80 | unsigned int feerate_per_kw; |
| 81 | int argnum; |
| 82 | struct bitcoin_tx *tx; |
| 83 | size_t weight; |
| 84 | struct utxo input; |
| 85 | struct bitcoin_signature sig; |
| 86 | struct bitcoin_txid txid; |
| 87 | u8 **witnesses; |
| 88 | |
| 89 | setup_locale(); |
| 90 | chainparams = chainparams_for_network("bitcoin"); |
| 91 | |
| 92 | secp256k1_ctx = secp256k1_context_create(SECP256K1_CONTEXT_VERIFY | |
| 93 | SECP256K1_CONTEXT_SIGN); |
| 94 | |
| 95 | if (argc != 1 + 7) |
| 96 | errx(1, "Usage: mkfunding <input-txid> <input-txout> <input-amount> <feerate-per-kw> <input-privkey> <local-funding-privkey> <remote-funding-privkey>"); |
| 97 | |
| 98 | input.is_p2sh = false; |
| 99 | input.close_info = NULL; |
| 100 | |
| 101 | argnum = 1; |
| 102 | if (!bitcoin_txid_from_hex(argv[argnum], |
| 103 | strlen(argv[argnum]), &input.outpoint.txid)) |
| 104 | errx(1, "Bad input-txid"); |
| 105 | argnum++; |
| 106 | input.outpoint.n = atoi(argv[argnum++]); |
| 107 | if (!parse_amount_sat(&input.amount, argv[argnum], strlen(argv[argnum]))) |
| 108 | errx(1, "Bad input-amount"); |
| 109 | argnum++; |
| 110 | feerate_per_kw = atoi(argv[argnum++]); |
| 111 | if (!hex_decode(argv[argnum], strlen(argv[argnum]), |
| 112 | &input_privkey, sizeof(input_privkey))) |
| 113 | errx(1, "Parsing input-privkey"); |
| 114 | argnum++; |
| 115 | if (!hex_decode(argv[argnum], strlen(argv[argnum]), |
| 116 | &local_funding_privkey, sizeof(local_funding_privkey))) |
| 117 | errx(1, "Parsing local-funding-privkey"); |
| 118 | argnum++; |
| 119 | if (!hex_decode(argv[argnum], strlen(argv[argnum]), |
| 120 | &remote_funding_privkey, sizeof(remote_funding_privkey))) |
| 121 | errx(1, "Parsing remote-funding-privkey"); |
| 122 | argnum++; |
| 123 | |
| 124 | if (!pubkey_from_privkey(&input_privkey, &inputkey) |
| 125 | || !pubkey_from_privkey(&local_funding_privkey, &funding_localkey) |
| 126 | || !pubkey_from_privkey(&remote_funding_privkey, &funding_remotekey)) |
| 127 | errx(1, "Bad privkeys"); |
| 128 | |
| 129 | /* nVersion, input count, output count, nLocktime */ |
| 130 | weight = 4 * (4 + 1 + 1 + 4); |
| 131 | /* Add segwit fields: marker + flag */ |
nothing calls this directly
no test coverage detected