From 683717332c1c7ac23c45e5216833c6720e16054f Mon Sep 17 00:00:00 2001 From: t-bast Date: Tue, 30 Aug 2022 13:53:34 +0200 Subject: [PATCH] Add anchor outputs zero fee spec test vector As specified in https://github.com/lightning/bolts/pull/1018 --- ...-tx-test-vectors-anchor-outputs-format.txt | 8 + ...anchor-outputs-zero-fee-htlc-tx-format.txt | 168 ++++++++++++++++++ .../eclair/transactions/TestVectorsSpec.scala | 98 ++++++---- 3 files changed, 241 insertions(+), 33 deletions(-) create mode 100644 eclair-core/src/test/resources/bolt3-tx-test-vectors-anchor-outputs-zero-fee-htlc-tx-format.txt diff --git a/eclair-core/src/test/resources/bolt3-tx-test-vectors-anchor-outputs-format.txt b/eclair-core/src/test/resources/bolt3-tx-test-vectors-anchor-outputs-format.txt index 276c908630..05fc690657 100644 --- a/eclair-core/src/test/resources/bolt3-tx-test-vectors-anchor-outputs-format.txt +++ b/eclair-core/src/test/resources/bolt3-tx-test-vectors-anchor-outputs-format.txt @@ -6,6 +6,14 @@ output commit_tx: 02000000000101bef67e4e2fb9ddeeb3461973cd4c62abb35050b1add772995b820b584a488489000000000038b02b80044a010000000000002200202b1b5854183c12d3316565972c4668929d314d81c5dcdbb21cb45fe8a9a8114f4a01000000000000220020e9e86e4823faa62e222ebc858a226636856158f07e69898da3b0d1af0ddb3994c0c62d0000000000220020f3394e1e619b0eca1f91be2fb5ab4dfc59ba5b84ebe014ad1d43a564d012994a508b6a00000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e04004830450221008266ac6db5ea71aac3c95d97b0e172ff596844851a3216eb88382a8dddfd33d2022050e240974cfd5d708708b4365574517c18e7ae535ef732a3484d43d0d82be9f701483045022100f89034eba16b2be0e5581f750a0a6309192b75cce0f202f0ee2b4ec0cc394850022076c65dc507fe42276152b7a3d90e961e678adbe966e916ecfe85e64d430e75f301475221023da092f6980e58d2c037173180e9a465476026ee50f96695963e8efe436f54eb21030e9f7b623d2ccc7c9bd44d66d5ce21ce504c0acf6385a132cec6d3c39fa711c152ae3e195220 num_htlcs: 0 + name: simple commitment tx with no HTLCs and single anchor + to_local_msat: 7000000000 + to_remote_msat: 0 + local_feerate_per_kw: 15000 + remote_signature = 304402200dc30542c9b8b2ff4b8d98f46798b3218a088a07e97b9e786177287dc6a5347b02203d23b1c2bf17262362fdb4cdcc36dbb449a9efcdb10051ad52cfa09fc76842b0 + output commit_tx: 02000000000101bef67e4e2fb9ddeeb3461973cd4c62abb35050b1add772995b820b584a488489000000000038b02b80024a010000000000002200202b1b5854183c12d3316565972c4668929d314d81c5dcdbb21cb45fe8a9a8114f508b6a00000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e0400483045022100da5310620e72bc23dc57af25d18102cc75479aea0258ab89fe1a66ca176033ec0220339efb450c12872e134c8bda986bb92f3e4eebcaa2d0fee5d9a2b1257d12f12a0147304402200dc30542c9b8b2ff4b8d98f46798b3218a088a07e97b9e786177287dc6a5347b02203d23b1c2bf17262362fdb4cdcc36dbb449a9efcdb10051ad52cfa09fc76842b001475221023da092f6980e58d2c037173180e9a465476026ee50f96695963e8efe436f54eb21030e9f7b623d2ccc7c9bd44d66d5ce21ce504c0acf6385a132cec6d3c39fa711c152ae3e195220 + num_htlcs: 0 + name: commitment tx with all five HTLCs untrimmed (minimum feerate) to_local_msat: 6988000000 to_remote_msat: 3000000000 diff --git a/eclair-core/src/test/resources/bolt3-tx-test-vectors-anchor-outputs-zero-fee-htlc-tx-format.txt b/eclair-core/src/test/resources/bolt3-tx-test-vectors-anchor-outputs-zero-fee-htlc-tx-format.txt new file mode 100644 index 0000000000..d636e3c170 --- /dev/null +++ b/eclair-core/src/test/resources/bolt3-tx-test-vectors-anchor-outputs-zero-fee-htlc-tx-format.txt @@ -0,0 +1,168 @@ + name: simple commitment tx with no HTLCs + to_local_msat: 7000000000 + to_remote_msat: 3000000000 + local_feerate_per_kw: 15000 + dust_limit_satoshis: 546 + remote_signature = 3045022100f89034eba16b2be0e5581f750a0a6309192b75cce0f202f0ee2b4ec0cc394850022076c65dc507fe42276152b7a3d90e961e678adbe966e916ecfe85e64d430e75f3 + output commit_tx: 02000000000101bef67e4e2fb9ddeeb3461973cd4c62abb35050b1add772995b820b584a488489000000000038b02b80044a010000000000002200202b1b5854183c12d3316565972c4668929d314d81c5dcdbb21cb45fe8a9a8114f4a01000000000000220020e9e86e4823faa62e222ebc858a226636856158f07e69898da3b0d1af0ddb3994c0c62d0000000000220020f3394e1e619b0eca1f91be2fb5ab4dfc59ba5b84ebe014ad1d43a564d012994a508b6a00000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e04004830450221008266ac6db5ea71aac3c95d97b0e172ff596844851a3216eb88382a8dddfd33d2022050e240974cfd5d708708b4365574517c18e7ae535ef732a3484d43d0d82be9f701483045022100f89034eba16b2be0e5581f750a0a6309192b75cce0f202f0ee2b4ec0cc394850022076c65dc507fe42276152b7a3d90e961e678adbe966e916ecfe85e64d430e75f301475221023da092f6980e58d2c037173180e9a465476026ee50f96695963e8efe436f54eb21030e9f7b623d2ccc7c9bd44d66d5ce21ce504c0acf6385a132cec6d3c39fa711c152ae3e195220 + num_htlcs: 0 + + name: simple commitment tx with no HTLCs and single anchor + to_local_msat: 7000000000 + to_remote_msat: 0 + local_feerate_per_kw: 15000 + dust_limit_satoshis: 546 + remote_signature = 304402200dc30542c9b8b2ff4b8d98f46798b3218a088a07e97b9e786177287dc6a5347b02203d23b1c2bf17262362fdb4cdcc36dbb449a9efcdb10051ad52cfa09fc76842b0 + output commit_tx: 02000000000101bef67e4e2fb9ddeeb3461973cd4c62abb35050b1add772995b820b584a488489000000000038b02b80024a010000000000002200202b1b5854183c12d3316565972c4668929d314d81c5dcdbb21cb45fe8a9a8114f508b6a00000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e0400483045022100da5310620e72bc23dc57af25d18102cc75479aea0258ab89fe1a66ca176033ec0220339efb450c12872e134c8bda986bb92f3e4eebcaa2d0fee5d9a2b1257d12f12a0147304402200dc30542c9b8b2ff4b8d98f46798b3218a088a07e97b9e786177287dc6a5347b02203d23b1c2bf17262362fdb4cdcc36dbb449a9efcdb10051ad52cfa09fc76842b001475221023da092f6980e58d2c037173180e9a465476026ee50f96695963e8efe436f54eb21030e9f7b623d2ccc7c9bd44d66d5ce21ce504c0acf6385a132cec6d3c39fa711c152ae3e195220 + num_htlcs: 0 + + name: commitment tx with all five HTLCs untrimmed (minimum feerate) + to_local_msat: 6988000000 + to_remote_msat: 3000000000 + local_feerate_per_kw: 0 + remote_signature = 3044022076a51aed1bd085487a7023f2ca8a87544a60a5b7277805b614b6ff7d36f1a44c02207ffac246b6572f3b4c9a7867ffa97c203500eebbf14659df78cfa0fadea22a64 + output commit_tx: 02000000000101bef67e4e2fb9ddeeb3461973cd4c62abb35050b1add772995b820b584a488489000000000038b02b80094a010000000000002200202b1b5854183c12d3316565972c4668929d314d81c5dcdbb21cb45fe8a9a8114f4a01000000000000220020e9e86e4823faa62e222ebc858a226636856158f07e69898da3b0d1af0ddb3994e80300000000000022002010f88bf09e56f14fb4543fd26e47b0db50ea5de9cf3fc46434792471082621aed0070000000000002200203e68115ae0b15b8de75b6c6bc9af5ac9f01391544e0870dae443a1e8fe7837ead007000000000000220020fe0598d74fee2205cc3672e6e6647706b4f3099713b4661b62482c3addd04a5eb80b000000000000220020f96d0334feb64a4f40eb272031d07afcb038db56aa57446d60308c9f8ccadef9a00f000000000000220020ce6e751274836ff59622a0d1e07f8831d80bd6730bd48581398bfadd2bb8da9ac0c62d0000000000220020f3394e1e619b0eca1f91be2fb5ab4dfc59ba5b84ebe014ad1d43a564d012994a4c9e6a00000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e0400483045022100cf8f902751006923e4062f5dbf55f8475bef08f4b5ac060d219bbff6c1a4431b02206006c515754ffc1f4f263004f61082e1fe4241449629da9096b0679e7e30972201473044022076a51aed1bd085487a7023f2ca8a87544a60a5b7277805b614b6ff7d36f1a44c02207ffac246b6572f3b4c9a7867ffa97c203500eebbf14659df78cfa0fadea22a6401475221023da092f6980e58d2c037173180e9a465476026ee50f96695963e8efe436f54eb21030e9f7b623d2ccc7c9bd44d66d5ce21ce504c0acf6385a132cec6d3c39fa711c152ae3e195220 + num_htlcs: 5 + # signature for output #2 (htlc-success for htlc #0) + remote_htlc_signature = 30440220627339df18b9a37bc829385f6f0267b33e94c07fdf0fce3f1697ad1c67eefc6e022012edb8c003bb4977b083d30ccda0101bf669a25846a3a7e5a0cdd8bfb5ad8234 + # local_htlc_signature = 30450221008b46dbb4df7f0e386d2ab2a1c5251bc502c8e9e4a35cd9e2be7134e4af9c82920220606a8a147419e98f4c9b074150283734e73a1920f91621eefb2ceabf5e903f2b + htlc_success_tx (htlc #0): 020000000001017fcd67e09cd17d77b0a6015221bc45cee4281a42844581cc1df60415e7f2675c02000000000100000001e8030000000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e05004730440220627339df18b9a37bc829385f6f0267b33e94c07fdf0fce3f1697ad1c67eefc6e022012edb8c003bb4977b083d30ccda0101bf669a25846a3a7e5a0cdd8bfb5ad8234834830450221008b46dbb4df7f0e386d2ab2a1c5251bc502c8e9e4a35cd9e2be7134e4af9c82920220606a8a147419e98f4c9b074150283734e73a1920f91621eefb2ceabf5e903f2b012000000000000000000000000000000000000000000000000000000000000000008d76a91414011f7254d96b819c76986c277d115efce6f7b58763ac67210394854aa6eab5b2a8122cc726e9dded053a2184d88256816826d6231c068d4a5b7c8201208763a914b8bcb07f6344b42ab04250c86a6e8b75d3fdbbc688527c21030d417a46946384f88d5f3337267c5e579765875dc4daca813e21734b140639e752ae677502f401b175ac6851b2756800000000 + # signature for output #3 (htlc-timeout for htlc #2) + remote_htlc_signature = 304402206b238b1841ac5cd26a908da773bd4a000bd5ab3ef2d7bb266887043f0b9e42e0022029a9573aa23c82123e5a6d475462e2e0e8e2ea034a0bf6563cb3853068645519 + # local_htlc_signature = 3045022100d594933496f92fe7d48c850d0cd7a8093dade88ea0bda055c7750c6474c5c5ef0220363024530f2312c8951b6aa6a27f0d7993db2f1a4d44dc23a5174b800454d72b + htlc_timeout_tx (htlc #2): 020000000001017fcd67e09cd17d77b0a6015221bc45cee4281a42844581cc1df60415e7f2675c03000000000100000001d0070000000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e050047304402206b238b1841ac5cd26a908da773bd4a000bd5ab3ef2d7bb266887043f0b9e42e0022029a9573aa23c82123e5a6d475462e2e0e8e2ea034a0bf6563cb385306864551983483045022100d594933496f92fe7d48c850d0cd7a8093dade88ea0bda055c7750c6474c5c5ef0220363024530f2312c8951b6aa6a27f0d7993db2f1a4d44dc23a5174b800454d72b01008876a91414011f7254d96b819c76986c277d115efce6f7b58763ac67210394854aa6eab5b2a8122cc726e9dded053a2184d88256816826d6231c068d4a5b7c820120876475527c21030d417a46946384f88d5f3337267c5e579765875dc4daca813e21734b140639e752ae67a914b43e1b38138a41b37f7cd9a1d274bc63e3a9b5d188ac6851b27568f6010000 + # signature for output #4 (htlc-success for htlc #1) + remote_htlc_signature = 30440220349215b20045e7ecb1ffc52a34e9d8fb4eed2efbd0bdafd710bfee84f03fa9630220386c0c7b103891a849f019d11e8a26397bc204e4b90998a849a6c956b0160ca0 + # local_htlc_signature = 304402203904ca53c086253377bd0154084c8d959eff373bb88bb45f15951e24dc4d30910220722d813636890223a7d682b13166d8ce55216caefea07ff67307475ef9a6ccf2 + htlc_success_tx (htlc #1): 020000000001017fcd67e09cd17d77b0a6015221bc45cee4281a42844581cc1df60415e7f2675c04000000000100000001d0070000000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e05004730440220349215b20045e7ecb1ffc52a34e9d8fb4eed2efbd0bdafd710bfee84f03fa9630220386c0c7b103891a849f019d11e8a26397bc204e4b90998a849a6c956b0160ca08347304402203904ca53c086253377bd0154084c8d959eff373bb88bb45f15951e24dc4d30910220722d813636890223a7d682b13166d8ce55216caefea07ff67307475ef9a6ccf2012001010101010101010101010101010101010101010101010101010101010101018d76a91414011f7254d96b819c76986c277d115efce6f7b58763ac67210394854aa6eab5b2a8122cc726e9dded053a2184d88256816826d6231c068d4a5b7c8201208763a9144b6b2e5444c2639cc0fb7bcea5afba3f3cdce23988527c21030d417a46946384f88d5f3337267c5e579765875dc4daca813e21734b140639e752ae677502f501b175ac6851b2756800000000 + # signature for output #5 (htlc-timeout for htlc #3) + remote_htlc_signature = 3045022100e1720474cf9542f10355e7c7e036f6c9679bae9689816fb1db4fefabc8ad0a3d02201815d326838754cbc088d65191f28cd22052d6957a71d9ed9ca5701fcee76e3f + # local_htlc_signature = 304302207b24b990da8b2a872199fa0633cc7af06d924db79e18b3451b497cc1b32db44f021f363aeaa5345e0768e40535811e5fe360cbdbb077963d1e506255ee798c3234 + htlc_timeout_tx (htlc #3): 020000000001017fcd67e09cd17d77b0a6015221bc45cee4281a42844581cc1df60415e7f2675c05000000000100000001b80b0000000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e0500483045022100e1720474cf9542f10355e7c7e036f6c9679bae9689816fb1db4fefabc8ad0a3d02201815d326838754cbc088d65191f28cd22052d6957a71d9ed9ca5701fcee76e3f8346304302207b24b990da8b2a872199fa0633cc7af06d924db79e18b3451b497cc1b32db44f021f363aeaa5345e0768e40535811e5fe360cbdbb077963d1e506255ee798c323401008876a91414011f7254d96b819c76986c277d115efce6f7b58763ac67210394854aa6eab5b2a8122cc726e9dded053a2184d88256816826d6231c068d4a5b7c820120876475527c21030d417a46946384f88d5f3337267c5e579765875dc4daca813e21734b140639e752ae67a9148a486ff2e31d6158bf39e2608864d63fefd09d5b88ac6851b27568f7010000 + # signature for output #6 (htlc-success for htlc #4) + remote_htlc_signature = 3045022100a2a5fd584d6af9e99d06b9d707e1a349abe7022187eb9d913fa6f55f51ea452102201bbb856d4ed73801014d7bec50e3b66547f4db46e9d29609828b42e1975552d6 + # local_htlc_signature = 304502210086a2bc2a62fd5c2ab1823d9e66a0cb57fb4ff363ddae9792c8fe323656b6bf1a022044a543323209ca8c52b7d842e101358f4afde218c7809630f6dbeb0b99933633 + htlc_success_tx (htlc #4): 020000000001017fcd67e09cd17d77b0a6015221bc45cee4281a42844581cc1df60415e7f2675c06000000000100000001a00f0000000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e0500483045022100a2a5fd584d6af9e99d06b9d707e1a349abe7022187eb9d913fa6f55f51ea452102201bbb856d4ed73801014d7bec50e3b66547f4db46e9d29609828b42e1975552d68348304502210086a2bc2a62fd5c2ab1823d9e66a0cb57fb4ff363ddae9792c8fe323656b6bf1a022044a543323209ca8c52b7d842e101358f4afde218c7809630f6dbeb0b99933633012004040404040404040404040404040404040404040404040404040404040404048d76a91414011f7254d96b819c76986c277d115efce6f7b58763ac67210394854aa6eab5b2a8122cc726e9dded053a2184d88256816826d6231c068d4a5b7c8201208763a91418bc1a114ccf9c052d3d23e28d3b0a9d1227434288527c21030d417a46946384f88d5f3337267c5e579765875dc4daca813e21734b140639e752ae677502f801b175ac6851b2756800000000 + + name: commitment tx with seven outputs untrimmed (maximum feerate) + to_local_msat: 6988000000 + to_remote_msat: 3000000000 + local_feerate_per_kw: 644 + dust_limit_satoshis: 546 + remote_signature = 3045022100e0106830467a558c07544a3de7715610c1147062e7d091deeebe8b5c661cda9402202ad049c1a6d04834317a78483f723c205c9f638d17222aafc620800cc1b6ae35 + output commit_tx: 02000000000101bef67e4e2fb9ddeeb3461973cd4c62abb35050b1add772995b820b584a488489000000000038b02b80094a010000000000002200202b1b5854183c12d3316565972c4668929d314d81c5dcdbb21cb45fe8a9a8114f4a01000000000000220020e9e86e4823faa62e222ebc858a226636856158f07e69898da3b0d1af0ddb3994e80300000000000022002010f88bf09e56f14fb4543fd26e47b0db50ea5de9cf3fc46434792471082621aed0070000000000002200203e68115ae0b15b8de75b6c6bc9af5ac9f01391544e0870dae443a1e8fe7837ead007000000000000220020fe0598d74fee2205cc3672e6e6647706b4f3099713b4661b62482c3addd04a5eb80b000000000000220020f96d0334feb64a4f40eb272031d07afcb038db56aa57446d60308c9f8ccadef9a00f000000000000220020ce6e751274836ff59622a0d1e07f8831d80bd6730bd48581398bfadd2bb8da9ac0c62d0000000000220020f3394e1e619b0eca1f91be2fb5ab4dfc59ba5b84ebe014ad1d43a564d012994a4f996a00000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e0400483045022100ef82a405364bfc4007e63a7cc82925a513d79065bdbc216d60b6a4223a323f8a02200716730b8561f3c6d362eaf47f202e99fb30d0557b61b92b5f9134f8e2de368101483045022100e0106830467a558c07544a3de7715610c1147062e7d091deeebe8b5c661cda9402202ad049c1a6d04834317a78483f723c205c9f638d17222aafc620800cc1b6ae3501475221023da092f6980e58d2c037173180e9a465476026ee50f96695963e8efe436f54eb21030e9f7b623d2ccc7c9bd44d66d5ce21ce504c0acf6385a132cec6d3c39fa711c152ae3e195220 + num_htlcs: 5 + # signature for output #2 (htlc-success for htlc #0) + remote_htlc_signature = 30440220746dc89a593e1b50915db63359b50c3c404f8324f78075c87708c866ccefda2502202a11062012dc8607b17e8c46ea4eefdfcc6b89a35440de99432ba12788d7bb17 + # local_htlc_signature = 3044022036f77f88b49bd03dc16d3a015efcc7acffc2a93b213324035d77a716f79013ff02203c218eb882a40402a8bb05dbb751a442345a4e56307be76b214b6d4db9ed3c92 + htlc_success_tx (htlc #0): 02000000000101b8cefef62ea66f5178b9361b2371be0759cbc8c689bcfa7a8e6746d497ec221a02000000000100000001e8030000000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e05004730440220746dc89a593e1b50915db63359b50c3c404f8324f78075c87708c866ccefda2502202a11062012dc8607b17e8c46ea4eefdfcc6b89a35440de99432ba12788d7bb1783473044022036f77f88b49bd03dc16d3a015efcc7acffc2a93b213324035d77a716f79013ff02203c218eb882a40402a8bb05dbb751a442345a4e56307be76b214b6d4db9ed3c92012000000000000000000000000000000000000000000000000000000000000000008d76a91414011f7254d96b819c76986c277d115efce6f7b58763ac67210394854aa6eab5b2a8122cc726e9dded053a2184d88256816826d6231c068d4a5b7c8201208763a914b8bcb07f6344b42ab04250c86a6e8b75d3fdbbc688527c21030d417a46946384f88d5f3337267c5e579765875dc4daca813e21734b140639e752ae677502f401b175ac6851b2756800000000 + # signature for output #3 (htlc-timeout for htlc #2) + remote_htlc_signature = 3045022100a847bc3b8cf2441013725ae32dc589c419835d069afd6d7f3d9834d8be7cea6e02204ce9d35ec7f0788da80e4d62e810c4ccd13617e58fa10832e38fb7ae87bdf338 + # local_htlc_signature = 3044022026739b1adbfa34c485bf0e5a19e0cf7532f64545bcc5c95b95643ccc2d351e1902201743bb1b34f00e031cc15f6eff0f8ab764508d2681ff965ba62e76e540bca1e8 + htlc_timeout_tx (htlc #2): 02000000000101b8cefef62ea66f5178b9361b2371be0759cbc8c689bcfa7a8e6746d497ec221a03000000000100000001d0070000000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e0500483045022100a847bc3b8cf2441013725ae32dc589c419835d069afd6d7f3d9834d8be7cea6e02204ce9d35ec7f0788da80e4d62e810c4ccd13617e58fa10832e38fb7ae87bdf33883473044022026739b1adbfa34c485bf0e5a19e0cf7532f64545bcc5c95b95643ccc2d351e1902201743bb1b34f00e031cc15f6eff0f8ab764508d2681ff965ba62e76e540bca1e801008876a91414011f7254d96b819c76986c277d115efce6f7b58763ac67210394854aa6eab5b2a8122cc726e9dded053a2184d88256816826d6231c068d4a5b7c820120876475527c21030d417a46946384f88d5f3337267c5e579765875dc4daca813e21734b140639e752ae67a914b43e1b38138a41b37f7cd9a1d274bc63e3a9b5d188ac6851b27568f6010000 + # signature for output #4 (htlc-success for htlc #1) + remote_htlc_signature = 3044022035977f2aa6d6ae12f1dae3366440faa17558e9c88c3188bfc8df7e276c6c65410220659f1f9070c725d9d46e43b99a36fc6d711d36069704add2d57fc1fa2818cf12 + # local_htlc_signature = 30440220191ba44e57b1601a59d99f85971d4801b286d428de275487c87ceeb8df1a4811022002215875d92833df0c9615c9096cf97152f87139ed9f82718bbb5b8b3d312524 + htlc_success_tx (htlc #1): 02000000000101b8cefef62ea66f5178b9361b2371be0759cbc8c689bcfa7a8e6746d497ec221a04000000000100000001d0070000000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e0500473044022035977f2aa6d6ae12f1dae3366440faa17558e9c88c3188bfc8df7e276c6c65410220659f1f9070c725d9d46e43b99a36fc6d711d36069704add2d57fc1fa2818cf12834730440220191ba44e57b1601a59d99f85971d4801b286d428de275487c87ceeb8df1a4811022002215875d92833df0c9615c9096cf97152f87139ed9f82718bbb5b8b3d312524012001010101010101010101010101010101010101010101010101010101010101018d76a91414011f7254d96b819c76986c277d115efce6f7b58763ac67210394854aa6eab5b2a8122cc726e9dded053a2184d88256816826d6231c068d4a5b7c8201208763a9144b6b2e5444c2639cc0fb7bcea5afba3f3cdce23988527c21030d417a46946384f88d5f3337267c5e579765875dc4daca813e21734b140639e752ae677502f501b175ac6851b2756800000000 + # signature for output #5 (htlc-timeout for htlc #3) + remote_htlc_signature = 3044022002f3ff9a31270092c214d3d5b8b4f826599404bba64b87f7536ef6324d41551b022079dc4cb25f7ecd84b49f5cce03eae7e2655b59f39d543765daef0d4f11c93fa2 + # local_htlc_signature = 3045022100f03047e38bc0aae2d80d53424b8c1d1b8139120e2bf09ad31a2803978745e6e102205b74c0eef0b472710b98c77e619ee9d0cc47a9dd786f4f214a564f44d79f9b9a + htlc_timeout_tx (htlc #3): 02000000000101b8cefef62ea66f5178b9361b2371be0759cbc8c689bcfa7a8e6746d497ec221a05000000000100000001b80b0000000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e0500473044022002f3ff9a31270092c214d3d5b8b4f826599404bba64b87f7536ef6324d41551b022079dc4cb25f7ecd84b49f5cce03eae7e2655b59f39d543765daef0d4f11c93fa283483045022100f03047e38bc0aae2d80d53424b8c1d1b8139120e2bf09ad31a2803978745e6e102205b74c0eef0b472710b98c77e619ee9d0cc47a9dd786f4f214a564f44d79f9b9a01008876a91414011f7254d96b819c76986c277d115efce6f7b58763ac67210394854aa6eab5b2a8122cc726e9dded053a2184d88256816826d6231c068d4a5b7c820120876475527c21030d417a46946384f88d5f3337267c5e579765875dc4daca813e21734b140639e752ae67a9148a486ff2e31d6158bf39e2608864d63fefd09d5b88ac6851b27568f7010000 + # signature for output #6 (htlc-success for htlc #4) + remote_htlc_signature = 30440220547937564288f64fb3e3c945a1348b912471f0c1c4cc7dc8ceca15a4cbd299b6022053c4f8e30832b13dfbe31e4091e313428625e0b5ac61eecba93f8f11c1e26225 + # local_htlc_signature = 3044022022604660234aef9bd21284598ec50f070ac82a3a0152e0af5e98a02cd6e8976f022042b0b9112ee00806b856dff6de52a82c98b036a4fe14bb5fd2926725e2fc8191 + htlc_success_tx (htlc #4): 02000000000101b8cefef62ea66f5178b9361b2371be0759cbc8c689bcfa7a8e6746d497ec221a06000000000100000001a00f0000000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e05004730440220547937564288f64fb3e3c945a1348b912471f0c1c4cc7dc8ceca15a4cbd299b6022053c4f8e30832b13dfbe31e4091e313428625e0b5ac61eecba93f8f11c1e2622583473044022022604660234aef9bd21284598ec50f070ac82a3a0152e0af5e98a02cd6e8976f022042b0b9112ee00806b856dff6de52a82c98b036a4fe14bb5fd2926725e2fc8191012004040404040404040404040404040404040404040404040404040404040404048d76a91414011f7254d96b819c76986c277d115efce6f7b58763ac67210394854aa6eab5b2a8122cc726e9dded053a2184d88256816826d6231c068d4a5b7c8201208763a91418bc1a114ccf9c052d3d23e28d3b0a9d1227434288527c21030d417a46946384f88d5f3337267c5e579765875dc4daca813e21734b140639e752ae677502f801b175ac6851b2756800000000 + + name: commitment tx with six outputs untrimmed (minimum feerate) + to_local_msat: 6988000000 + to_remote_msat: 3000000000 + local_feerate_per_kw: 645 + dust_limit_satoshis: 1001 + remote_signature = 3044022025d97466c8049e955a5afce28e322f4b34d2561118e52332fb400f9b908cc0a402205dc6fba3a0d67ee142c428c535580cd1f2ff42e2f89b47e0c8a01847caffc312 + output commit_tx: 02000000000101bef67e4e2fb9ddeeb3461973cd4c62abb35050b1add772995b820b584a488489000000000038b02b80084a010000000000002200202b1b5854183c12d3316565972c4668929d314d81c5dcdbb21cb45fe8a9a8114f4a01000000000000220020e9e86e4823faa62e222ebc858a226636856158f07e69898da3b0d1af0ddb3994d0070000000000002200203e68115ae0b15b8de75b6c6bc9af5ac9f01391544e0870dae443a1e8fe7837ead007000000000000220020fe0598d74fee2205cc3672e6e6647706b4f3099713b4661b62482c3addd04a5eb80b000000000000220020f96d0334feb64a4f40eb272031d07afcb038db56aa57446d60308c9f8ccadef9a00f000000000000220020ce6e751274836ff59622a0d1e07f8831d80bd6730bd48581398bfadd2bb8da9ac0c62d0000000000220020f3394e1e619b0eca1f91be2fb5ab4dfc59ba5b84ebe014ad1d43a564d012994abc996a00000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e0400483045022100d57697c707b6f6d053febf24b98e8989f186eea42e37e9e91663ec2c70bb8f70022079b0715a472118f262f43016a674f59c015d9cafccec885968e76d9d9c5d005101473044022025d97466c8049e955a5afce28e322f4b34d2561118e52332fb400f9b908cc0a402205dc6fba3a0d67ee142c428c535580cd1f2ff42e2f89b47e0c8a01847caffc31201475221023da092f6980e58d2c037173180e9a465476026ee50f96695963e8efe436f54eb21030e9f7b623d2ccc7c9bd44d66d5ce21ce504c0acf6385a132cec6d3c39fa711c152ae3e195220 + num_htlcs: 4 + # signature for output #2 (htlc-timeout for htlc #2) + remote_htlc_signature = 3045022100e04d160a326432659fe9fb127304c1d348dfeaba840081bdc57d8efd902a48d8022008a824e7cf5492b97e4d9e03c06a09f822775a44f6b5b2533a2088904abfc282 + # local_htlc_signature = 3045022100b7c49846466b13b190ff739bbe3005c105482fc55539e55b1c561f76b6982b6c02200e5c35808619cf543c8405cff9fedd25f333a4a2f6f6d5e8af8150090c40ef09 + htlc_timeout_tx (htlc #2): 02000000000101104f394af4c4fad78337f95e3e9f802f4c0d86ab231853af09b285348561320002000000000100000001d0070000000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e0500483045022100e04d160a326432659fe9fb127304c1d348dfeaba840081bdc57d8efd902a48d8022008a824e7cf5492b97e4d9e03c06a09f822775a44f6b5b2533a2088904abfc28283483045022100b7c49846466b13b190ff739bbe3005c105482fc55539e55b1c561f76b6982b6c02200e5c35808619cf543c8405cff9fedd25f333a4a2f6f6d5e8af8150090c40ef0901008876a91414011f7254d96b819c76986c277d115efce6f7b58763ac67210394854aa6eab5b2a8122cc726e9dded053a2184d88256816826d6231c068d4a5b7c820120876475527c21030d417a46946384f88d5f3337267c5e579765875dc4daca813e21734b140639e752ae67a914b43e1b38138a41b37f7cd9a1d274bc63e3a9b5d188ac6851b27568f6010000 + # signature for output #3 (htlc-success for htlc #1) + remote_htlc_signature = 3045022100fbdc3c367ce3bf30796025cc590ee1f2ce0e72ae1ac19f5986d6d0a4fc76211f02207e45ae9267e8e820d188569604f71d1abd11bd385d58853dd7dc034cdb3e9a6e + # local_htlc_signature = 3045022100d29330f24db213b262068706099b39c15fa7e070c3fcdf8836c09723fc4d365602203ce57d01e9f28601e461a0b5c4a50119b270bde8b70148d133a6849c70b115ac + htlc_success_tx (htlc #1): 02000000000101104f394af4c4fad78337f95e3e9f802f4c0d86ab231853af09b285348561320003000000000100000001d0070000000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e0500483045022100fbdc3c367ce3bf30796025cc590ee1f2ce0e72ae1ac19f5986d6d0a4fc76211f02207e45ae9267e8e820d188569604f71d1abd11bd385d58853dd7dc034cdb3e9a6e83483045022100d29330f24db213b262068706099b39c15fa7e070c3fcdf8836c09723fc4d365602203ce57d01e9f28601e461a0b5c4a50119b270bde8b70148d133a6849c70b115ac012001010101010101010101010101010101010101010101010101010101010101018d76a91414011f7254d96b819c76986c277d115efce6f7b58763ac67210394854aa6eab5b2a8122cc726e9dded053a2184d88256816826d6231c068d4a5b7c8201208763a9144b6b2e5444c2639cc0fb7bcea5afba3f3cdce23988527c21030d417a46946384f88d5f3337267c5e579765875dc4daca813e21734b140639e752ae677502f501b175ac6851b2756800000000 + # signature for output #4 (htlc-timeout for htlc #3) + remote_htlc_signature = 3044022066c5ef625cee3ddd2bc7b6bfb354b5834cf1cc6d52dd972fb41b7b225437ae4a022066cb85647df65c6b87a54e416dcdcca778a776c36a9643d2b5dc793c9b29f4c1 + # local_htlc_signature = 304402202d4ce515cd9000ec37575972d70b8d24f73909fb7012e8ebd8c2066ef6fe187902202830b53e64ea565fecd0f398100691da6bb2a5cf9bb0d1926f1d71d05828a11e + htlc_timeout_tx (htlc #3): 02000000000101104f394af4c4fad78337f95e3e9f802f4c0d86ab231853af09b285348561320004000000000100000001b80b0000000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e0500473044022066c5ef625cee3ddd2bc7b6bfb354b5834cf1cc6d52dd972fb41b7b225437ae4a022066cb85647df65c6b87a54e416dcdcca778a776c36a9643d2b5dc793c9b29f4c18347304402202d4ce515cd9000ec37575972d70b8d24f73909fb7012e8ebd8c2066ef6fe187902202830b53e64ea565fecd0f398100691da6bb2a5cf9bb0d1926f1d71d05828a11e01008876a91414011f7254d96b819c76986c277d115efce6f7b58763ac67210394854aa6eab5b2a8122cc726e9dded053a2184d88256816826d6231c068d4a5b7c820120876475527c21030d417a46946384f88d5f3337267c5e579765875dc4daca813e21734b140639e752ae67a9148a486ff2e31d6158bf39e2608864d63fefd09d5b88ac6851b27568f7010000 + # signature for output #5 (htlc-success for htlc #4) + remote_htlc_signature = 3044022022c7e11595c53ee89a57ca76baf0aed730da035952d6ab3fe6459f5eff3b337a022075e10cc5f5fd724a35ce4087a5d03cd616698626c69814032132b50bb97dc615 + # local_htlc_signature = 3045022100b20cd63e0587d1711beaebda4730775c4ac8b8b2ec78fe18a0c44c3f168c25230220079abb7fc4924e2fca5950842e5b9e416735585026914570078c4ef62f286226 + htlc_success_tx (htlc #4): 02000000000101104f394af4c4fad78337f95e3e9f802f4c0d86ab231853af09b285348561320005000000000100000001a00f0000000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e0500473044022022c7e11595c53ee89a57ca76baf0aed730da035952d6ab3fe6459f5eff3b337a022075e10cc5f5fd724a35ce4087a5d03cd616698626c69814032132b50bb97dc61583483045022100b20cd63e0587d1711beaebda4730775c4ac8b8b2ec78fe18a0c44c3f168c25230220079abb7fc4924e2fca5950842e5b9e416735585026914570078c4ef62f286226012004040404040404040404040404040404040404040404040404040404040404048d76a91414011f7254d96b819c76986c277d115efce6f7b58763ac67210394854aa6eab5b2a8122cc726e9dded053a2184d88256816826d6231c068d4a5b7c8201208763a91418bc1a114ccf9c052d3d23e28d3b0a9d1227434288527c21030d417a46946384f88d5f3337267c5e579765875dc4daca813e21734b140639e752ae677502f801b175ac6851b2756800000000 + + name: commitment tx with four outputs untrimmed (minimum feerate) + to_local_msat: 6988000000 + to_remote_msat: 3000000000 + local_feerate_per_kw: 2185 + dust_limit_satoshis: 2001 + remote_signature = 3044022040f63a16148cf35c8d3d41827f5ae7f7c3746885bb64d4d1b895892a83812b3e02202fcf95c2bf02c466163b3fa3ced6a24926fbb4035095a96842ef516e86ba54c0 + output commit_tx: 02000000000101bef67e4e2fb9ddeeb3461973cd4c62abb35050b1add772995b820b584a488489000000000038b02b80064a010000000000002200202b1b5854183c12d3316565972c4668929d314d81c5dcdbb21cb45fe8a9a8114f4a01000000000000220020e9e86e4823faa62e222ebc858a226636856158f07e69898da3b0d1af0ddb3994b80b000000000000220020f96d0334feb64a4f40eb272031d07afcb038db56aa57446d60308c9f8ccadef9a00f000000000000220020ce6e751274836ff59622a0d1e07f8831d80bd6730bd48581398bfadd2bb8da9ac0c62d0000000000220020f3394e1e619b0eca1f91be2fb5ab4dfc59ba5b84ebe014ad1d43a564d012994ac5916a00000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e0400483045022100cd8479cfe1edb1e5a1d487391e0451a469c7171e51e680183f19eb4321f20e9b02204eab7d5a6384b1b08e03baa6e4d9748dfd2b5ab2bae7e39604a0d0055bbffdd501473044022040f63a16148cf35c8d3d41827f5ae7f7c3746885bb64d4d1b895892a83812b3e02202fcf95c2bf02c466163b3fa3ced6a24926fbb4035095a96842ef516e86ba54c001475221023da092f6980e58d2c037173180e9a465476026ee50f96695963e8efe436f54eb21030e9f7b623d2ccc7c9bd44d66d5ce21ce504c0acf6385a132cec6d3c39fa711c152ae3e195220 + num_htlcs: 2 + # signature for output #2 (htlc-timeout for htlc #3) + remote_htlc_signature = 304402206870514a72ad6e723ff7f1e0370d7a33c1cd2a0b9272674143ebaf6a1d02dee102205bd953c34faf5e7322e9a1c0103581cb090280fda4f1039ee8552668afa90ebb + # local_htlc_signature = 30440220669de9ca7910eff65a7773ebd14a9fc371fe88cde5b8e2a81609d85c87ac939b02201ac29472fa4067322e92d75b624942d60be5050139b20bb363db75be79eb946f + htlc_timeout_tx (htlc #3): 02000000000101ac13a7715f80b8e52dda43c6929cade5521bdced3a405da02b443f1ffb1e33cc02000000000100000001b80b0000000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e050047304402206870514a72ad6e723ff7f1e0370d7a33c1cd2a0b9272674143ebaf6a1d02dee102205bd953c34faf5e7322e9a1c0103581cb090280fda4f1039ee8552668afa90ebb834730440220669de9ca7910eff65a7773ebd14a9fc371fe88cde5b8e2a81609d85c87ac939b02201ac29472fa4067322e92d75b624942d60be5050139b20bb363db75be79eb946f01008876a91414011f7254d96b819c76986c277d115efce6f7b58763ac67210394854aa6eab5b2a8122cc726e9dded053a2184d88256816826d6231c068d4a5b7c820120876475527c21030d417a46946384f88d5f3337267c5e579765875dc4daca813e21734b140639e752ae67a9148a486ff2e31d6158bf39e2608864d63fefd09d5b88ac6851b27568f7010000 + # signature for output #3 (htlc-success for htlc #4) + remote_htlc_signature = 3045022100949e8dd938da56445b1cdfdebe1b7efea086edd05d89910d205a1e2e033ce47102202cbd68b5262ab144d9ec12653f87dfb0bb6bd05d1f58ae1e523f028eaefd7271 + # local_htlc_signature = 3045022100e3104ed8b239f8019e5f0a1a73d7782a94a8c36e7984f476c3a0b3cb0e62e27902207e3d52884600985f8a2098e53a5c30dd6a5e857733acfaa07ab2162421ed2688 + htlc_success_tx (htlc #4): 02000000000101ac13a7715f80b8e52dda43c6929cade5521bdced3a405da02b443f1ffb1e33cc03000000000100000001a00f0000000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e0500483045022100949e8dd938da56445b1cdfdebe1b7efea086edd05d89910d205a1e2e033ce47102202cbd68b5262ab144d9ec12653f87dfb0bb6bd05d1f58ae1e523f028eaefd727183483045022100e3104ed8b239f8019e5f0a1a73d7782a94a8c36e7984f476c3a0b3cb0e62e27902207e3d52884600985f8a2098e53a5c30dd6a5e857733acfaa07ab2162421ed2688012004040404040404040404040404040404040404040404040404040404040404048d76a91414011f7254d96b819c76986c277d115efce6f7b58763ac67210394854aa6eab5b2a8122cc726e9dded053a2184d88256816826d6231c068d4a5b7c8201208763a91418bc1a114ccf9c052d3d23e28d3b0a9d1227434288527c21030d417a46946384f88d5f3337267c5e579765875dc4daca813e21734b140639e752ae677502f801b175ac6851b2756800000000 + + name: commitment tx with three outputs untrimmed (minimum feerate) + to_local_msat: 6988000000 + to_remote_msat: 3000000000 + local_feerate_per_kw: 3687 + dust_limit_satoshis: 3001 + remote_signature = 3045022100ad6c71569856b2d7ff42e838b4abe74a713426b37f22fa667a195a4c88908c6902202b37272b02a42dc6d9f4f82cab3eaf84ac882d9ed762859e1e75455c2c228377 + output commit_tx: 02000000000101bef67e4e2fb9ddeeb3461973cd4c62abb35050b1add772995b820b584a488489000000000038b02b80054a010000000000002200202b1b5854183c12d3316565972c4668929d314d81c5dcdbb21cb45fe8a9a8114f4a01000000000000220020e9e86e4823faa62e222ebc858a226636856158f07e69898da3b0d1af0ddb3994a00f000000000000220020ce6e751274836ff59622a0d1e07f8831d80bd6730bd48581398bfadd2bb8da9ac0c62d0000000000220020f3394e1e619b0eca1f91be2fb5ab4dfc59ba5b84ebe014ad1d43a564d012994aa28b6a00000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e0400483045022100c970799bcb33f43179eb43b3378a0a61991cf2923f69b36ef12548c3df0e6d500220413dc27d2e39ee583093adfcb7799be680141738babb31cc7b0669a777a31f5d01483045022100ad6c71569856b2d7ff42e838b4abe74a713426b37f22fa667a195a4c88908c6902202b37272b02a42dc6d9f4f82cab3eaf84ac882d9ed762859e1e75455c2c22837701475221023da092f6980e58d2c037173180e9a465476026ee50f96695963e8efe436f54eb21030e9f7b623d2ccc7c9bd44d66d5ce21ce504c0acf6385a132cec6d3c39fa711c152ae3e195220 + num_htlcs: 1 + # signature for output #2 (htlc-success for htlc #4) + remote_htlc_signature = 3044022017b558a3cf5f0cb94269e2e927b29ed22bd2416abb8a7ce6de4d1256f359b93602202e9ca2b1a23ea3e69f433c704e327739e219804b8c188b1d52f74fd5a9de954c + # local_htlc_signature = 3045022100af7a8b7c7ff2080c68995254cb66d64d9954edcc5baac3bb4f27ed2d29aaa6120220421c27da7a60574a9263f271e0f3bd34594ec6011095190022b3b54596ea03de + htlc_success_tx (htlc #4): 02000000000101542562b326c08e3a076d9cfca2be175041366591da334d8d513ff1686fd95a6002000000000100000001a00f0000000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e0500473044022017b558a3cf5f0cb94269e2e927b29ed22bd2416abb8a7ce6de4d1256f359b93602202e9ca2b1a23ea3e69f433c704e327739e219804b8c188b1d52f74fd5a9de954c83483045022100af7a8b7c7ff2080c68995254cb66d64d9954edcc5baac3bb4f27ed2d29aaa6120220421c27da7a60574a9263f271e0f3bd34594ec6011095190022b3b54596ea03de012004040404040404040404040404040404040404040404040404040404040404048d76a91414011f7254d96b819c76986c277d115efce6f7b58763ac67210394854aa6eab5b2a8122cc726e9dded053a2184d88256816826d6231c068d4a5b7c8201208763a91418bc1a114ccf9c052d3d23e28d3b0a9d1227434288527c21030d417a46946384f88d5f3337267c5e579765875dc4daca813e21734b140639e752ae677502f801b175ac6851b2756800000000 + + name: commitment tx with two outputs untrimmed (minimum feerate) + to_local_msat: 6988000000 + to_remote_msat: 3000000000 + local_feerate_per_kw: 4894 + dust_limit_satoshis: 4001 + remote_signature = 3045022100e784a66b1588575801e237d35e510fd92a81ae3a4a2a1b90c031ad803d07b3f3022021bc5f16501f167607d63b681442da193eb0a76b4b7fd25c2ed4f8b28fd35b95 + output commit_tx: 02000000000101bef67e4e2fb9ddeeb3461973cd4c62abb35050b1add772995b820b584a488489000000000038b02b80044a010000000000002200202b1b5854183c12d3316565972c4668929d314d81c5dcdbb21cb45fe8a9a8114f4a01000000000000220020e9e86e4823faa62e222ebc858a226636856158f07e69898da3b0d1af0ddb3994c0c62d0000000000220020f3394e1e619b0eca1f91be2fb5ab4dfc59ba5b84ebe014ad1d43a564d012994ad0886a00000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e04004830450221009f16ac85d232e4eddb3fcd750a68ebf0b58e3356eaada45d3513ede7e817bf4c02207c2b043b4e5f971261975406cb955219fa56bffe5d834a833694b5abc1ce4cfd01483045022100e784a66b1588575801e237d35e510fd92a81ae3a4a2a1b90c031ad803d07b3f3022021bc5f16501f167607d63b681442da193eb0a76b4b7fd25c2ed4f8b28fd35b9501475221023da092f6980e58d2c037173180e9a465476026ee50f96695963e8efe436f54eb21030e9f7b623d2ccc7c9bd44d66d5ce21ce504c0acf6385a132cec6d3c39fa711c152ae3e195220 + num_htlcs: 0 + + name: commitment tx with one output untrimmed (minimum feerate) + to_local_msat: 6988000000 + to_remote_msat: 3000000000 + local_feerate_per_kw: 6216010 + dust_limit_satoshis: 4001 + remote_signature = 30450221008fd5dbff02e4b59020d4cd23a3c30d3e287065fda75a0a09b402980adf68ccda022001e0b8b620cd915ddff11f1de32addf23d81d51b90e6841b2cb8dcaf3faa5ecf + output commit_tx: 02000000000101bef67e4e2fb9ddeeb3461973cd4c62abb35050b1add772995b820b584a488489000000000038b02b80024a01000000000000220020e9e86e4823faa62e222ebc858a226636856158f07e69898da3b0d1af0ddb3994c0c62d0000000000220020f3394e1e619b0eca1f91be2fb5ab4dfc59ba5b84ebe014ad1d43a564d012994a04004830450221009ad80792e3038fe6968d12ff23e6888a565c3ddd065037f357445f01675d63f3022018384915e5f1f4ae157e15debf4f49b61c8d9d2b073c7d6f97c4a68caa3ed4c1014830450221008fd5dbff02e4b59020d4cd23a3c30d3e287065fda75a0a09b402980adf68ccda022001e0b8b620cd915ddff11f1de32addf23d81d51b90e6841b2cb8dcaf3faa5ecf01475221023da092f6980e58d2c037173180e9a465476026ee50f96695963e8efe436f54eb21030e9f7b623d2ccc7c9bd44d66d5ce21ce504c0acf6385a132cec6d3c39fa711c152ae3e195220 + num_htlcs: 0 + + name: commitment tx with 3 htlc outputs, 2 offered having the same amount and preimage + to_local_msat: 6988000000 + to_remote_msat: 3000000000 + local_feerate_per_kw: 253 + dust_limit_satoshis: 546 + remote_signature: 3045022100c592f6b80d35b4f5d1e3bc9788f51141a0065be6013bad53a1977f7c444651660220278ac06ead9016bfb8dc476f186eabace2b02793b2f308442f5b0d5f24a68948 + output commit_tx: 02000000000101bef67e4e2fb9ddeeb3461973cd4c62abb35050b1add772995b820b584a488489000000000038b02b80074a010000000000002200202b1b5854183c12d3316565972c4668929d314d81c5dcdbb21cb45fe8a9a8114f4a01000000000000220020e9e86e4823faa62e222ebc858a226636856158f07e69898da3b0d1af0ddb3994d007000000000000220020fe0598d74fee2205cc3672e6e6647706b4f3099713b4661b62482c3addd04a5e881300000000000022002018e40f9072c44350f134bdc887bab4d9bdfc8aa468a25616c80e21757ba5dac7881300000000000022002018e40f9072c44350f134bdc887bab4d9bdfc8aa468a25616c80e21757ba5dac7c0c62d0000000000220020f3394e1e619b0eca1f91be2fb5ab4dfc59ba5b84ebe014ad1d43a564d012994aae9c6a00000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e0400483045022100c37ac4fc8538677631230c4b286f36b6f54c51fb4b34ef0bd0ba219ba47452630220278e09a745454ea380f3694392ed113762c68dd209b48360f547541088be9e4501483045022100c592f6b80d35b4f5d1e3bc9788f51141a0065be6013bad53a1977f7c444651660220278ac06ead9016bfb8dc476f186eabace2b02793b2f308442f5b0d5f24a6894801475221023da092f6980e58d2c037173180e9a465476026ee50f96695963e8efe436f54eb21030e9f7b623d2ccc7c9bd44d66d5ce21ce504c0acf6385a132cec6d3c39fa711c152ae3e195220 + num_htlcs: 3 + # signature for output #2 (htlc-success for htlc #1) + remote_htlc_signature = 3045022100de8a0649d54fd2e4fc04502c77df9b65da839bbd01854f818f129338b99564b2022009528dbb12c00e874cb2149b1dccc600c69ea5e4042ebf584984fcb029c2d1ec + # local_htlc_signature = 304402203e7c2622fa3ca29355d37a0ea991bfd7cdb54e6122a1d98d3229d092131f55cd022055263f7f8f32f4cd2f86da63ca106bd7badf0b19ee9833d80cd3b9216eeafd74 + htlc_success_tx (htlc #1): 02000000000101aa443fb63abc1e8c754f98a7b96c27cb02b21d891d1242a16b630dc32c2afe2902000000000100000001d0070000000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e0500483045022100de8a0649d54fd2e4fc04502c77df9b65da839bbd01854f818f129338b99564b2022009528dbb12c00e874cb2149b1dccc600c69ea5e4042ebf584984fcb029c2d1ec8347304402203e7c2622fa3ca29355d37a0ea991bfd7cdb54e6122a1d98d3229d092131f55cd022055263f7f8f32f4cd2f86da63ca106bd7badf0b19ee9833d80cd3b9216eeafd74012001010101010101010101010101010101010101010101010101010101010101018d76a91414011f7254d96b819c76986c277d115efce6f7b58763ac67210394854aa6eab5b2a8122cc726e9dded053a2184d88256816826d6231c068d4a5b7c8201208763a9144b6b2e5444c2639cc0fb7bcea5afba3f3cdce23988527c21030d417a46946384f88d5f3337267c5e579765875dc4daca813e21734b140639e752ae677502f501b175ac6851b2756800000000 + # signature for output #3 (htlc-timeout for htlc #5) + remote_htlc_signature = 3045022100de6eee8474376ea316d007b33103b4543a46bdf6fda5cbd5902b28a5bc14584f022002989e7b4f7813b77acbe4babcf96d7ffbbe0bf14cba24672364f8e591479edb + # local_htlc_signature = 3045022100c10688346a9d84647bde7027da07f0d79c6d4129307e4c6c9aea7bdbf25ac3350220269104209793c32c47491698c4e46ebea9c3293a1e4403f9abda39f79698f6b5 + htlc_timeout_tx (htlc #5): 02000000000101aa443fb63abc1e8c754f98a7b96c27cb02b21d891d1242a16b630dc32c2afe290300000000010000000188130000000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e0500483045022100de6eee8474376ea316d007b33103b4543a46bdf6fda5cbd5902b28a5bc14584f022002989e7b4f7813b77acbe4babcf96d7ffbbe0bf14cba24672364f8e591479edb83483045022100c10688346a9d84647bde7027da07f0d79c6d4129307e4c6c9aea7bdbf25ac3350220269104209793c32c47491698c4e46ebea9c3293a1e4403f9abda39f79698f6b501008876a91414011f7254d96b819c76986c277d115efce6f7b58763ac67210394854aa6eab5b2a8122cc726e9dded053a2184d88256816826d6231c068d4a5b7c820120876475527c21030d417a46946384f88d5f3337267c5e579765875dc4daca813e21734b140639e752ae67a9142002cc93ebefbb1b73f0af055dcc27a0b504ad7688ac6851b27568f9010000 + # signature for output #4 (htlc-timeout for htlc #6) + remote_htlc_signature = 3045022100fe87da8124ceecbcabb9d599c5339f40277c7c7406514fafbccbf180c7c09cf40220429c7fb6d0fd3705e931ab1219ab0432af38ae4d676008cc1964fbeb8cd35d2e + # local_htlc_signature = 3044022040ac769a851da31d8e4863e5f94719204f716c82a1ce6d6c52193d9a33b84bce022035df97b078ce80f20dca2109e4c6075af0b50148811452e7290e68b2680fced4 + htlc_timeout_tx (htlc #6): 02000000000101aa443fb63abc1e8c754f98a7b96c27cb02b21d891d1242a16b630dc32c2afe290400000000010000000188130000000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e0500483045022100fe87da8124ceecbcabb9d599c5339f40277c7c7406514fafbccbf180c7c09cf40220429c7fb6d0fd3705e931ab1219ab0432af38ae4d676008cc1964fbeb8cd35d2e83473044022040ac769a851da31d8e4863e5f94719204f716c82a1ce6d6c52193d9a33b84bce022035df97b078ce80f20dca2109e4c6075af0b50148811452e7290e68b2680fced401008876a91414011f7254d96b819c76986c277d115efce6f7b58763ac67210394854aa6eab5b2a8122cc726e9dded053a2184d88256816826d6231c068d4a5b7c820120876475527c21030d417a46946384f88d5f3337267c5e579765875dc4daca813e21734b140639e752ae67a9142002cc93ebefbb1b73f0af055dcc27a0b504ad7688ac6851b27568fa010000 diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/transactions/TestVectorsSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/transactions/TestVectorsSpec.scala index 08491d982c..a4bf34c1fe 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/transactions/TestVectorsSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/transactions/TestVectorsSpec.scala @@ -16,9 +16,9 @@ package fr.acinq.eclair.transactions -import fr.acinq.bitcoin.scalacompat.Crypto.{PrivateKey, PublicKey} -import fr.acinq.bitcoin.scalacompat.{ByteVector32, Crypto, SatoshiLong, Script, Transaction} import fr.acinq.bitcoin.ScriptFlags +import fr.acinq.bitcoin.scalacompat.Crypto.{PrivateKey, PublicKey} +import fr.acinq.bitcoin.scalacompat.{ByteVector32, Crypto, Satoshi, SatoshiLong, Script, Transaction} import fr.acinq.eclair.blockchain.fee.FeeratePerKw import fr.acinq.eclair.channel.ChannelFeatures import fr.acinq.eclair.channel.Helpers.Funding @@ -63,6 +63,8 @@ trait TestVectorsSpec extends AnyFunSuite with Logging { def getFeerate(name: String): FeeratePerKw = FeeratePerKw(tests(name)("local_feerate_per_kw").trim.toLong.sat) + def getDustLimit(name: String): Option[Satoshi] = tests.get(name).flatMap(_.get("dust_limit_satoshis")).map(_.trim.toLong.sat) + def getToLocal(name: String): MilliSatoshi = tests(name)("to_local_msat").trim.toLong.msat def getToRemote(name: String): MilliSatoshi = tests(name)("to_remote_msat").trim.toLong.msat @@ -180,13 +182,14 @@ trait TestVectorsSpec extends AnyFunSuite with Logging { def run(name: String, specHtlcs: Set[DirectedHtlc]): (CommitTx, Seq[TransactionWithInputInfo]) = { logger.info(s"name: $name") val spec = CommitmentSpec(specHtlcs, getFeerate(name), getToLocal(name), getToRemote(name)) + val dustLimit = getDustLimit(name).getOrElse(Local.dustLimit) logger.info(s"to_local_msat: ${spec.toLocal}") logger.info(s"to_remote_msat: ${spec.toRemote}") logger.info(s"local_feerate_per_kw: ${spec.commitTxFeerate}") val outputs = Transactions.makeCommitTxOutputs( localIsInitiator = true, - localDustLimit = Local.dustLimit, + localDustLimit = dustLimit, localRevocationPubkey = Local.revocation_pubkey, toLocalDelay = Local.toSelfDelay, localDelayedPaymentPubkey = Local.delayed_payment_privkey.publicKey, @@ -213,7 +216,7 @@ trait TestVectorsSpec extends AnyFunSuite with Logging { Transactions.addSigs(tx, Local.funding_pubkey, Remote.funding_pubkey, local_sig, remote_sig) } - val baseFee = Transactions.commitTxFeeMsat(Local.dustLimit, spec, commitmentFormat) + val baseFee = Transactions.commitTxFeeMsat(dustLimit, spec, commitmentFormat) logger.info(s"# base commitment transaction fee = ${baseFee.toLong}") val actualFee = fundingAmount - commitTx.tx.txOut.map(_.amount).sum logger.info(s"# actual commitment transaction fee = ${actualFee.toLong}") @@ -233,7 +236,7 @@ trait TestVectorsSpec extends AnyFunSuite with Logging { val unsignedHtlcTxs = Transactions.makeHtlcTxs( commitTx.tx, - Local.dustLimit, + dustLimit, Local.revocation_pubkey, Local.toSelfDelay, Local.delayed_payment_privkey.publicKey, spec.htlcTxFeerate(commitmentFormat), @@ -285,6 +288,14 @@ trait TestVectorsSpec extends AnyFunSuite with Logging { assert(commitTx.tx == Transaction.read(tests(name)("output commit_tx"))) } + test("simple commitment tx with no HTLCs and single anchor") { + val name = "simple commitment tx with no HTLCs and single anchor" + if (commitmentFormat.isInstanceOf[AnchorOutputsCommitmentFormat]) { + val (commitTx, _) = run(name, Set.empty[DirectedHtlc]) + assert(commitTx.tx == Transaction.read(tests(name)("output commit_tx"))) + } + } + test("commitment tx with all five HTLCs untrimmed (minimum feerate)") { val name = "commitment tx with all five HTLCs untrimmed (minimum feerate)" val (commitTx, htlcTxs) = run(name, defaultHtlcs.toSet) @@ -307,24 +318,30 @@ trait TestVectorsSpec extends AnyFunSuite with Logging { } test("commitment tx with six outputs untrimmed (maximum feerate)") { - val name = "commitment tx with six outputs untrimmed (maximum feerate)" - val (commitTx, htlcTxs) = run(name, defaultHtlcs.toSet) - assert(commitTx.tx == Transaction.read(tests(name)("output commit_tx"))) - verifyHtlcTxs(name, htlcTxs) + if (commitmentFormat != ZeroFeeHtlcTxAnchorOutputsCommitmentFormat) { + val name = "commitment tx with six outputs untrimmed (maximum feerate)" + val (commitTx, htlcTxs) = run(name, defaultHtlcs.toSet) + assert(commitTx.tx == Transaction.read(tests(name)("output commit_tx"))) + verifyHtlcTxs(name, htlcTxs) + } } test("commitment tx with five outputs untrimmed (minimum feerate)") { - val name = "commitment tx with five outputs untrimmed (minimum feerate)" - val (commitTx, htlcTxs) = run(name, defaultHtlcs.toSet) - assert(commitTx.tx == Transaction.read(tests(name)("output commit_tx"))) - verifyHtlcTxs(name, htlcTxs) + if (commitmentFormat != ZeroFeeHtlcTxAnchorOutputsCommitmentFormat) { + val name = "commitment tx with five outputs untrimmed (minimum feerate)" + val (commitTx, htlcTxs) = run(name, defaultHtlcs.toSet) + assert(commitTx.tx == Transaction.read(tests(name)("output commit_tx"))) + verifyHtlcTxs(name, htlcTxs) + } } test("commitment tx with five outputs untrimmed (maximum feerate)") { - val name = "commitment tx with five outputs untrimmed (maximum feerate)" - val (commitTx, htlcTxs) = run(name, defaultHtlcs.toSet) - assert(commitTx.tx == Transaction.read(tests(name)("output commit_tx"))) - verifyHtlcTxs(name, htlcTxs) + if (commitmentFormat != ZeroFeeHtlcTxAnchorOutputsCommitmentFormat) { + val name = "commitment tx with five outputs untrimmed (maximum feerate)" + val (commitTx, htlcTxs) = run(name, defaultHtlcs.toSet) + assert(commitTx.tx == Transaction.read(tests(name)("output commit_tx"))) + verifyHtlcTxs(name, htlcTxs) + } } test("commitment tx with four outputs untrimmed (minimum feerate)") { @@ -335,10 +352,12 @@ trait TestVectorsSpec extends AnyFunSuite with Logging { } test("commitment tx with four outputs untrimmed (maximum feerate)") { - val name = "commitment tx with four outputs untrimmed (maximum feerate)" - val (commitTx, htlcTxs) = run(name, defaultHtlcs.toSet) - assert(commitTx.tx == Transaction.read(tests(name)("output commit_tx"))) - verifyHtlcTxs(name, htlcTxs) + if (commitmentFormat != ZeroFeeHtlcTxAnchorOutputsCommitmentFormat) { + val name = "commitment tx with four outputs untrimmed (maximum feerate)" + val (commitTx, htlcTxs) = run(name, defaultHtlcs.toSet) + assert(commitTx.tx == Transaction.read(tests(name)("output commit_tx"))) + verifyHtlcTxs(name, htlcTxs) + } } test("commitment tx with three outputs untrimmed (minimum feerate)") { @@ -349,10 +368,12 @@ trait TestVectorsSpec extends AnyFunSuite with Logging { } test("commitment tx with three outputs untrimmed (maximum feerate)") { - val name = "commitment tx with three outputs untrimmed (maximum feerate)" - val (commitTx, htlcTxs) = run(name, defaultHtlcs.toSet) - assert(commitTx.tx == Transaction.read(tests(name)("output commit_tx"))) - verifyHtlcTxs(name, htlcTxs) + if (commitmentFormat != ZeroFeeHtlcTxAnchorOutputsCommitmentFormat) { + val name = "commitment tx with three outputs untrimmed (maximum feerate)" + val (commitTx, htlcTxs) = run(name, defaultHtlcs.toSet) + assert(commitTx.tx == Transaction.read(tests(name)("output commit_tx"))) + verifyHtlcTxs(name, htlcTxs) + } } test("commitment tx with two outputs untrimmed (minimum feerate)") { @@ -363,10 +384,12 @@ trait TestVectorsSpec extends AnyFunSuite with Logging { } test("commitment tx with two outputs untrimmed (maximum feerate)") { - val name = "commitment tx with two outputs untrimmed (maximum feerate)" - val (commitTx, htlcTxs) = run(name, defaultHtlcs.toSet) - assert(commitTx.tx == Transaction.read(tests(name)("output commit_tx"))) - verifyHtlcTxs(name, htlcTxs) + if (commitmentFormat != ZeroFeeHtlcTxAnchorOutputsCommitmentFormat) { + val name = "commitment tx with two outputs untrimmed (maximum feerate)" + val (commitTx, htlcTxs) = run(name, defaultHtlcs.toSet) + assert(commitTx.tx == Transaction.read(tests(name)("output commit_tx"))) + verifyHtlcTxs(name, htlcTxs) + } } test("commitment tx with one output untrimmed (minimum feerate)") { @@ -377,10 +400,12 @@ trait TestVectorsSpec extends AnyFunSuite with Logging { } test("commitment tx with fee greater than funder amount") { - val name = "commitment tx with fee greater than funder amount" - val (commitTx, htlcTxs) = run(name, defaultHtlcs.toSet) - assert(commitTx.tx == Transaction.read(tests(name)("output commit_tx"))) - verifyHtlcTxs(name, htlcTxs) + if (commitmentFormat != ZeroFeeHtlcTxAnchorOutputsCommitmentFormat) { + val name = "commitment tx with fee greater than funder amount" + val (commitTx, htlcTxs) = run(name, defaultHtlcs.toSet) + assert(commitTx.tx == Transaction.read(tests(name)("output commit_tx"))) + verifyHtlcTxs(name, htlcTxs) + } } test("commitment tx with 3 htlc outputs, 2 offered having the same amount and preimage") { @@ -417,3 +442,10 @@ class AnchorOutputsTestVectorSpec extends TestVectorsSpec { override def channelFeatures: ChannelFeatures = ChannelFeatures(Features.StaticRemoteKey, Features.AnchorOutputs) // @formatter:on } + +class AnchorOutputsZeroFeeHtlcTxTestVectorSpec extends TestVectorsSpec { + // @formatter:off + override def filename: String = "/bolt3-tx-test-vectors-anchor-outputs-zero-fee-htlc-tx-format.txt" + override def channelFeatures: ChannelFeatures = ChannelFeatures(Features.StaticRemoteKey, Features.AnchorOutputsZeroFeeHtlcTx) + // @formatter:on +}