Skip to content

BOLT 3: add test vectors for htlc-transactions in case where CLTV is used as tie-breaker for sorting #539

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 54 additions & 1 deletion 03-transactions.md
Original file line number Diff line number Diff line change
Expand Up @@ -1039,6 +1039,14 @@ HTLCs are not used for the first "simple commitment tx with no HTLCs" test.
htlc 4 amount_msat: 4000000
htlc 4 expiry: 504
htlc 4 payment_preimage: 0404040404040404040404040404040404040404040404040404040404040404
htlc 5 direction: local->remote
htlc 5 amount_msat: 5000000
htlc 5 expiry: 505
htlc 5 payment_preimage: 0505050505050505050505050505050505050505050505050505050505050505
htlc 6 direction: local->remote
htlc 6 amount_msat: 5000000
htlc 6 expiry: 506
htlc 6 payment_preimage: 0505050505050505050505050505050505050505050505050505050505050505

<!-- The test vector values are derived, as per Key Derivation, though it's not
required for this test. They're included here for completeness and
Expand Down Expand Up @@ -1423,6 +1431,28 @@ And, here are the test vectors themselves:
output commit_tx: 02000000000101bef67e4e2fb9ddeeb3461973cd4c62abb35050b1add772995b820b584a488489000000000038b02b8001c0c62d0000000000160014ccf1af2f2aabee14bb40fa3851ab2301de8431100400473044022031a82b51bd014915fe68928d1abf4b9885353fb896cac10c3fdd88d7f9c7f2e00220716bda819641d2c63e65d3549b6120112e1aeaf1742eed94a471488e79e206b101473044022064901950be922e62cbe3f2ab93de2b99f37cff9fc473e73e394b27f88ef0731d02206d1dfa227527b4df44a07599289e207d6fd9cca60c0365682dcd3deaf739567e01475221023da092f6980e58d2c037173180e9a465476026ee50f96695963e8efe436f54eb21030e9f7b623d2ccc7c9bd44d66d5ce21ce504c0acf6385a132cec6d3c39fa711c152ae3e195220
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
Comment on lines +1435 to +1438
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ack this test vector for 280e960.

I have added this to c-lightning unit tests, and confirmed exact match on the signatures and all transactions.

# HTLC 0 received amount 1000000 wscript 76a91414011f7254d96b819c76986c277d115efce6f7b58763ac67210394854aa6eab5b2a8122cc726e9dded053a2184d88256816826d6231c068d4a5b7c8201208763a914b8bcb07f6344b42ab04250c86a6e8b75d3fdbbc688527c21030d417a46946384f88d5f3337267c5e579765875dc4daca813e21734b140639e752ae677502f401b175ac6868
# HTLC 5 offered amount 5000000 wscript 76a91414011f7254d96b819c76986c277d115efce6f7b58763ac67210394854aa6eab5b2a8122cc726e9dded053a2184d88256816826d6231c068d4a5b7c820120876475527c21030d417a46946384f88d5f3337267c5e579765875dc4daca813e21734b140639e752ae67a9142002cc93ebefbb1b73f0af055dcc27a0b504ad7688ac6868
# HTLC 6 offered amount 5000000 wscript 76a91414011f7254d96b819c76986c277d115efce6f7b58763ac67210394854aa6eab5b2a8122cc726e9dded053a2184d88256816826d6231c068d4a5b7c820120876475527c21030d417a46946384f88d5f3337267c5e579765875dc4daca813e21734b140639e752ae67a9142002cc93ebefbb1b73f0af055dcc27a0b504ad7688ac6868
# HTLC 5 and 6 have CLTV 505 and 506, respectively, and preimage 0505050505050505050505050505050505050505050505050505050505050505
remote_signature = 3044022069797b84fad1e0e7b02e1edeec80cb6e0b6f01170700bca273788715f55e0c560220260833550768b1db3ed88f8c005cf2560821b1879ec69834cd9765de25ec3506
# local_signature = 30440220586f17b3f3f6eec96a0dc7040f1a33174c707e032010421fa1965497cd1c81e602204476e6a4cc17d433e8ad82edff2ffa47c954ecb52aad9cc34382befb66f6e000
output commit_tx: 02000000000101bef67e4e2fb9ddeeb3461973cd4c62abb35050b1add772995b820b584a488489000000000038b02b8005e80300000000000022002052bfef0479d7b293c27e0f1eb294bea154c63a3294ef092c19af51409bce0e2a8813000000000000220020305c12e1a0bc21e283c131cea1c66d68857d28b7b2fce0a6fbc40c164852121b8813000000000000220020305c12e1a0bc21e283c131cea1c66d68857d28b7b2fce0a6fbc40c164852121bc0c62d0000000000160014ccf1af2f2aabee14bb40fa3851ab2301de843110a79f6a00000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e04004730440220586f17b3f3f6eec96a0dc7040f1a33174c707e032010421fa1965497cd1c81e602204476e6a4cc17d433e8ad82edff2ffa47c954ecb52aad9cc34382befb66f6e00001473044022069797b84fad1e0e7b02e1edeec80cb6e0b6f01170700bca273788715f55e0c560220260833550768b1db3ed88f8c005cf2560821b1879ec69834cd9765de25ec350601475221023da092f6980e58d2c037173180e9a465476026ee50f96695963e8efe436f54eb21030e9f7b623d2ccc7c9bd44d66d5ce21ce504c0acf6385a132cec6d3c39fa711c152ae3e195220
# local_htlc_signature = 3044022077803ffab08308ac6ceaba6024855029f31d88e1420ece6aac1cf35258efb42702207db2cfe24de7b19a6e0e95082c595643fe18b7e0f0071297b2bb940807e774d2
# remote_htlc_signature = 304502210087be93ccb1fd373ebd489c2dbe5f3a95a5cd7b173255f63367d063843f0ed263022027de0683bc4ac9afe1cdff48f16bb1a8e27789328b534e1cc39bf4dd0448ed69
output htlc_success_tx 0: 020000000001012ac263f51690e216ddc176c047106d762592174f52ff72614b037f23124a67440000000000000000000137030000000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e050048304502210087be93ccb1fd373ebd489c2dbe5f3a95a5cd7b173255f63367d063843f0ed263022027de0683bc4ac9afe1cdff48f16bb1a8e27789328b534e1cc39bf4dd0448ed6901473044022077803ffab08308ac6ceaba6024855029f31d88e1420ece6aac1cf35258efb42702207db2cfe24de7b19a6e0e95082c595643fe18b7e0f0071297b2bb940807e774d2012000000000000000000000000000000000000000000000000000000000000000008a76a91414011f7254d96b819c76986c277d115efce6f7b58763ac67210394854aa6eab5b2a8122cc726e9dded053a2184d88256816826d6231c068d4a5b7c8201208763a914b8bcb07f6344b42ab04250c86a6e8b75d3fdbbc688527c21030d417a46946384f88d5f3337267c5e579765875dc4daca813e21734b140639e752ae677502f401b175ac686800000000
# local_htlc_signature = 30440220579ac2d6fdbdb0cb7bb07b9d2a52e9cb87aab26156b6290c504c1781f025daa00220310d6a5dc91c4c49cc362c1942b2af84130052c8ec597c1287d9cc18cd349f39
# remote_htlc_signature = 3045022100e75ab7170a3cd3266d0abd38566ca8e6f9102949a4394e497a855dd3c0d7158b02201b91a0f3b18c512d8223eb4fdccb563d1a64b828882ca0b183340ee36dff152f
output htlc_timeout_tx 1: 020000000001012ac263f51690e216ddc176c047106d762592174f52ff72614b037f23124a674401000000000000000001e1120000000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e0500483045022100e75ab7170a3cd3266d0abd38566ca8e6f9102949a4394e497a855dd3c0d7158b02201b91a0f3b18c512d8223eb4fdccb563d1a64b828882ca0b183340ee36dff152f014730440220579ac2d6fdbdb0cb7bb07b9d2a52e9cb87aab26156b6290c504c1781f025daa00220310d6a5dc91c4c49cc362c1942b2af84130052c8ec597c1287d9cc18cd349f3901008576a91414011f7254d96b819c76986c277d115efce6f7b58763ac67210394854aa6eab5b2a8122cc726e9dded053a2184d88256816826d6231c068d4a5b7c820120876475527c21030d417a46946384f88d5f3337267c5e579765875dc4daca813e21734b140639e752ae67a9142002cc93ebefbb1b73f0af055dcc27a0b504ad7688ac6868f9010000
# local_htlc_signature = 3045022100a62f73f9345a7821335391f00c64ebcba11628dd2e5058fc6f9827561381092402202c858823d25922fa2bafdac27f9bcd103d99d940823a581abe70bb0ab8ca9352
# remote_htlc_signature = 304402206afc9e5ad67a329bbbc63e00f9ce5fb90d07121cf57c4db0b9dd05881f1ee89d02200917f67fff5c5acfcd5e4825e6e651671af6c261eb69b6a44d159edae724f308
output htlc_timeout_tx 2: 020000000001012ac263f51690e216ddc176c047106d762592174f52ff72614b037f23124a674402000000000000000001e1120000000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e050047304402206afc9e5ad67a329bbbc63e00f9ce5fb90d07121cf57c4db0b9dd05881f1ee89d02200917f67fff5c5acfcd5e4825e6e651671af6c261eb69b6a44d159edae724f30801483045022100a62f73f9345a7821335391f00c64ebcba11628dd2e5058fc6f9827561381092402202c858823d25922fa2bafdac27f9bcd103d99d940823a581abe70bb0ab8ca935201008576a91414011f7254d96b819c76986c277d115efce6f7b58763ac67210394854aa6eab5b2a8122cc726e9dded053a2184d88256816826d6231c068d4a5b7c820120876475527c21030d417a46946384f88d5f3337267c5e579765875dc4daca813e21734b140639e752ae67a9142002cc93ebefbb1b73f0af055dcc27a0b504ad7688ac6868fa010000
num_htlcs: 3

# Appendix D: Per-commitment Secret Generation Test Vectors

These test the generation algorithm that all nodes use.
Expand Down Expand Up @@ -1710,7 +1740,7 @@ before subtraction of:
* Commit fee (funder only)
* Anchor outputs (funder only)
* In-flight htlcs

```yaml
[
{
Expand Down Expand Up @@ -1951,6 +1981,29 @@ before subtraction of:
"HtlcDescs": [],
"ExpectedCommitmentTxHex": "02000000000101bef67e4e2fb9ddeeb3461973cd4c62abb35050b1add772995b820b584a488489000000000038b02b80024a01000000000000220020e9e86e4823faa62e222ebc858a226636856158f07e69898da3b0d1af0ddb3994c0c62d0000000000220020f3394e1e619b0eca1f91be2fb5ab4dfc59ba5b84ebe014ad1d43a564d012994a04004830450221009ad80792e3038fe6968d12ff23e6888a565c3ddd065037f357445f01675d63f3022018384915e5f1f4ae157e15debf4f49b61c8d9d2b073c7d6f97c4a68caa3ed4c1014830450221008fd5dbff02e4b59020d4cd23a3c30d3e287065fda75a0a09b402980adf68ccda022001e0b8b620cd915ddff11f1de32addf23d81d51b90e6841b2cb8dcaf3faa5ecf01475221023da092f6980e58d2c037173180e9a465476026ee50f96695963e8efe436f54eb21030e9f7b623d2ccc7c9bd44d66d5ce21ce504c0acf6385a132cec6d3c39fa711c152ae3e195220",
"RemoteSigHex": "30450221008fd5dbff02e4b59020d4cd23a3c30d3e287065fda75a0a09b402980adf68ccda022001e0b8b620cd915ddff11f1de32addf23d81d51b90e6841b2cb8dcaf3faa5ecf"
},
{
"Name": "commitment tx with 3 htlc outputs, 2 offered having the same amount and preimage",
"LocalBalance": 6988000000,
"RemoteBalance": 3000000000,
"FeePerKw": 253,
"UseTestHtlcs": true,
"HtlcDescs": [
{
"RemoteSigHex": "3045022100db2e6f9c53ba0b399e12129014f6915e467de7d67ea1cff3a9cec6aa780bcdc40220277f9876b2cc200773b82a53bfb522259f8e1af2399627a817547e4cb143080a",
"ResolutionTxHex": "02000000000101c79e5fe4cdd18a9d78534ad7b00406e0274fdf0cd39adbc57fb28200fcfaeec10200000000010000000136030000000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e0500483045022100db2e6f9c53ba0b399e12129014f6915e467de7d67ea1cff3a9cec6aa780bcdc40220277f9876b2cc200773b82a53bfb522259f8e1af2399627a817547e4cb143080a83473044022011f1fa9e1bfbf70b2efd53d75e4947c47335567495c697b79cbf568be2842350022006489dd709aab9e25e1c9a314f4bbdf27c7201422f585c0e58d2b82280b5f701012000000000000000000000000000000000000000000000000000000000000000008d76a91414011f7254d96b819c76986c277d115efce6f7b58763ac67210394854aa6eab5b2a8122cc726e9dded053a2184d88256816826d6231c068d4a5b7c8201208763a914b8bcb07f6344b42ab04250c86a6e8b75d3fdbbc688527c21030d417a46946384f88d5f3337267c5e579765875dc4daca813e21734b140639e752ae677502f401b175ac6851b2756800000000"
},
{
"RemoteSigHex": "3045022100915a62a2df7a8da967053525c97783f365cf69987f9b9ddc12d739d2e5a43ce0022055eade45ee13d438d811ffb6851c776dc853f39d350f2a7b74db55be6cc3f979",
"ResolutionTxHex": "02000000000101c79e5fe4cdd18a9d78534ad7b00406e0274fdf0cd39adbc57fb28200fcfaeec103000000000100000001e0120000000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e0500483045022100915a62a2df7a8da967053525c97783f365cf69987f9b9ddc12d739d2e5a43ce0022055eade45ee13d438d811ffb6851c776dc853f39d350f2a7b74db55be6cc3f97983473044022033d2965dedc5bf45e2179b2fc6b45e83eeb5cfa578806dbdd93475ceef751adf0220405ae7c13795f64f753cf431957778fa8c9be336f056a763c5091bcdb2d96c7e01008876a91414011f7254d96b819c76986c277d115efce6f7b58763ac67210394854aa6eab5b2a8122cc726e9dded053a2184d88256816826d6231c068d4a5b7c820120876475527c21030d417a46946384f88d5f3337267c5e579765875dc4daca813e21734b140639e752ae67a9142002cc93ebefbb1b73f0af055dcc27a0b504ad7688ac6851b27568f9010000"
},
{
"RemoteSigHex": "3045022100d5b4178088c9012b7bc527357ffb0b53400f22b9ab623c917bc36ede76f2ad4002205624290ef9850e2591db46ed2d8cc6407363063798c18ba0cfa6ddc9fc62f0cc",
"ResolutionTxHex": "02000000000101c79e5fe4cdd18a9d78534ad7b00406e0274fdf0cd39adbc57fb28200fcfaeec104000000000100000001e0120000000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e0500483045022100d5b4178088c9012b7bc527357ffb0b53400f22b9ab623c917bc36ede76f2ad4002205624290ef9850e2591db46ed2d8cc6407363063798c18ba0cfa6ddc9fc62f0cc83483045022100de2b23c17311533079950dd77a1b5b0ae72efbbf0348580f029fe27915afa4df02207448948f441aa92382fd2519b02f30f67d5c9ad1cefb6755869aca7800a8135101008876a91414011f7254d96b819c76986c277d115efce6f7b58763ac67210394854aa6eab5b2a8122cc726e9dded053a2184d88256816826d6231c068d4a5b7c820120876475527c21030d417a46946384f88d5f3337267c5e579765875dc4daca813e21734b140639e752ae67a9142002cc93ebefbb1b73f0af055dcc27a0b504ad7688ac6851b27568fa010000"
}
],
"ExpectedCommitmentTxHex": "02000000000101bef67e4e2fb9ddeeb3461973cd4c62abb35050b1add772995b820b584a488489000000000038b02b80074a010000000000002200202b1b5854183c12d3316565972c4668929d314d81c5dcdbb21cb45fe8a9a8114f4a01000000000000220020e9e86e4823faa62e222ebc858a226636856158f07e69898da3b0d1af0ddb3994e80300000000000022002010f88bf09e56f14fb4543fd26e47b0db50ea5de9cf3fc46434792471082621ae881300000000000022002018e40f9072c44350f134bdc887bab4d9bdfc8aa468a25616c80e21757ba5dac7881300000000000022002018e40f9072c44350f134bdc887bab4d9bdfc8aa468a25616c80e21757ba5dac7c0c62d0000000000220020f3394e1e619b0eca1f91be2fb5ab4dfc59ba5b84ebe014ad1d43a564d012994aae9c6a00000000002200204adb4e2f00643db396dd120d4e7dc17625f5f2c11a40d857accc862d6b7dd80e040047304402206b6f71bc7ebc7c6cdefb1a5a36f06a8e270396cd61a203a492d7e75fed2a33d602202a5e2b9ffe8a023302258e8e5fa925cfa9b6b6ba5cc53af22476ed6b38a066180147304402204eb66c90038a47186c4506436a46db761397f40bbe29612ae3e68cf39f463a320220621b8c4135c54dbad92866db3524706b46d7f194c225bfa804ad528345d7cdf201475221023da092f6980e58d2c037173180e9a465476026ee50f96695963e8efe436f54eb21030e9f7b623d2ccc7c9bd44d66d5ce21ce504c0acf6385a132cec6d3c39fa711c152ae3e195220",
"RemoteSigHex": "304402204eb66c90038a47186c4506436a46db761397f40bbe29612ae3e68cf39f463a320220621b8c4135c54dbad92866db3524706b46d7f194c225bfa804ad528345d7cdf2"
}
]
```
Expand Down