|
|
|
|
@@ -157,7 +157,7 @@ int main(int argc, char *argv[])
|
|
|
|
|
/* BOLT #11:
|
|
|
|
|
*
|
|
|
|
|
* > ### Please make a donation of any amount using payment_hash 0001020304050607080900010203040506070809000102030405060708090102 to me @03e7156ae33b0a208d0744199163177e909e80176e55d97a2f221ede0f934dd9ad
|
|
|
|
|
* > lnbc1pvjluezpp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqdpl2pkx2ctnv5sxxmmwwd5kgetjypeh2ursdae8g6twvus8g6rfwvs8qun0dfjkxaq8rkx3yf5tcsyz3d73gafnh3cax9rn449d9p5uxz9ezhhypd0elx87sjle52x86fux2ypatgddc6k63n7erqz25le42c4u4ecky03ylcqca784w
|
|
|
|
|
* > lnbc1pvjluezsp5zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zygspp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqdpl2pkx2ctnv5sxxmmwwd5kgetjypeh2ursdae8g6twvus8g6rfwvs8qun0dfjkxaq0py3tfrnxkt5xadpzangn5rry6r0kqt4f3g36lwln8wwpxtxqccn5agpyte3nx0v78uwn78zu6k30k5mgdgn50yvnd20namlmzp2ersq8065fg
|
|
|
|
|
*/
|
|
|
|
|
if (!node_id_from_hexstr("03e7156ae33b0a208d0744199163177e909e80176e55d97a2f221ede0f934dd9ad", strlen("03e7156ae33b0a208d0744199163177e909e80176e55d97a2f221ede0f934dd9ad"), &node))
|
|
|
|
|
abort();
|
|
|
|
|
@@ -169,14 +169,17 @@ int main(int argc, char *argv[])
|
|
|
|
|
* * `lnbc`: prefix, Lightning on Bitcoin mainnet
|
|
|
|
|
* * `1`: Bech32 separator
|
|
|
|
|
* * `pvjluez`: timestamp (1496314658)
|
|
|
|
|
* * `s`: payment secret
|
|
|
|
|
* * `p5`: `data_length` (`p` = 1, `5` = 20; 1 * 32 + 20 == 52)
|
|
|
|
|
* * `zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zygs`: payment secret 1111111111111111111111111111111111111111111111111111111111111111
|
|
|
|
|
* * `p`: payment hash
|
|
|
|
|
* * `p5`: `data_length` (`p` = 1, `5` = 20; 1 * 32 + 20 == 52)
|
|
|
|
|
* * `qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypq`: payment hash 0001020304050607080900010203040506070809000102030405060708090102
|
|
|
|
|
* * `d`: short description
|
|
|
|
|
* * `pl`: `data_length` (`p` = 1, `l` = 31; 1 * 32 + 31 == 63)
|
|
|
|
|
* * `2pkx2ctnv5sxxmmwwd5kgetjypeh2ursdae8g6twvus8g6rfwvs8qun0dfjkxaq`: 'Please consider supporting this project'
|
|
|
|
|
* * `8rkx3yf5tcsyz3d73gafnh3cax9rn449d9p5uxz9ezhhypd0elx87sjle52x86fux2ypatgddc6k63n7erqz25le42c4u4ecky03ylcq`: signature
|
|
|
|
|
* * `ca784w`: Bech32 checksum
|
|
|
|
|
* * `0py3tfrnxkt5xadpzangn5rry6r0kqt4f3g36lwln8wwpxtxqccn5agpyte3nx0v78uwn78zu6k30k5mgdgn50yvnd20namlmzp2ersq`: signature
|
|
|
|
|
* * `8065fg`: Bech32 checksum
|
|
|
|
|
*/
|
|
|
|
|
b11 = new_bolt11(tmpctx, NULL);
|
|
|
|
|
b11->chain = chainparams_for_network("bitcoin");
|
|
|
|
|
@@ -186,14 +189,16 @@ int main(int argc, char *argv[])
|
|
|
|
|
&b11->payment_hash, sizeof(b11->payment_hash)))
|
|
|
|
|
abort();
|
|
|
|
|
b11->receiver_id = node;
|
|
|
|
|
b11->payment_secret = tal(b11, struct secret);
|
|
|
|
|
memset(b11->payment_secret, 0x11, sizeof(*b11->payment_secret));
|
|
|
|
|
b11->description = "Please consider supporting this project";
|
|
|
|
|
|
|
|
|
|
test_b11("lnbc1pvjluezpp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqdpl2pkx2ctnv5sxxmmwwd5kgetjypeh2ursdae8g6twvus8g6rfwvs8qun0dfjkxaq8rkx3yf5tcsyz3d73gafnh3cax9rn449d9p5uxz9ezhhypd0elx87sjle52x86fux2ypatgddc6k63n7erqz25le42c4u4ecky03ylcqca784w", b11, NULL);
|
|
|
|
|
test_b11("lnbc1pvjluezsp5zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zygspp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqdpl2pkx2ctnv5sxxmmwwd5kgetjypeh2ursdae8g6twvus8g6rfwvs8qun0dfjkxaq0py3tfrnxkt5xadpzangn5rry6r0kqt4f3g36lwln8wwpxtxqccn5agpyte3nx0v78uwn78zu6k30k5mgdgn50yvnd20namlmzp2ersq8065fg", b11, NULL);
|
|
|
|
|
|
|
|
|
|
/* BOLT #11:
|
|
|
|
|
*
|
|
|
|
|
* > ### Please send $3 for a cup of coffee to the same peer, within one minute
|
|
|
|
|
* > lnbc2500u1pvjluezpp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqdq5xysxxatsyp3k7enxv4jsxqzpuaztrnwngzn3kdzw5hydlzf03qdgm2hdq27cqv3agm2awhz5se903vruatfhq77w3ls4evs3ch9zw97j25emudupq63nyw24cg27h2rspfj9srp
|
|
|
|
|
* > lnbc2500u1pvjluezsp5zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zygspp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqdq5xysxxatsyp3k7enxv4jsxqzpuu4tgyw2zt3v3c7eljkv2cn8a3etgn8kh8ukctqdmuxdfa7xup0w5ruwpt6eugv73pgzqczz3nc8tcqt2pcljp8ldkrnu5klff35vyscq6lp6ja
|
|
|
|
|
*
|
|
|
|
|
* Breakdown:
|
|
|
|
|
*
|
|
|
|
|
@@ -201,6 +206,7 @@ int main(int argc, char *argv[])
|
|
|
|
|
* * `2500u`: amount (2500 micro-bitcoin)
|
|
|
|
|
* * `1`: Bech32 separator
|
|
|
|
|
* * `pvjluez`: timestamp (1496314658)
|
|
|
|
|
* * `s`: payment secret...
|
|
|
|
|
* * `p`: payment hash...
|
|
|
|
|
* * `d`: short description
|
|
|
|
|
* * `q5`: `data_length` (`q` = 0, `5` = 20; 0 * 32 + 20 == 20)
|
|
|
|
|
@@ -208,13 +214,15 @@ int main(int argc, char *argv[])
|
|
|
|
|
* * `x`: expiry time
|
|
|
|
|
* * `qz`: `data_length` (`q` = 0, `z` = 2; 0 * 32 + 2 == 2)
|
|
|
|
|
* * `pu`: 60 seconds (`p` = 1, `u` = 28; 1 * 32 + 28 == 60)
|
|
|
|
|
* * `aztrnwngzn3kdzw5hydlzf03qdgm2hdq27cqv3agm2awhz5se903vruatfhq77w3ls4evs3ch9zw97j25emudupq63nyw24cg27h2rsp`: signature
|
|
|
|
|
* * `fj9srp`: Bech32 checksum
|
|
|
|
|
* * `u4tgyw2zt3v3c7eljkv2cn8a3etgn8kh8ukctqdmuxdfa7xup0w5ruwpt6eugv73pgzqczz3nc8tcqt2pcljp8ldkrnu5klff35vyscq`: signature
|
|
|
|
|
* * `6lp6ja`: Bech32 checksum
|
|
|
|
|
*/
|
|
|
|
|
msatoshi = AMOUNT_MSAT(2500 * (1000ULL * 100000000) / 1000000);
|
|
|
|
|
b11 = new_bolt11(tmpctx, &msatoshi);
|
|
|
|
|
b11->chain = chainparams_for_network("bitcoin");
|
|
|
|
|
b11->timestamp = 1496314658;
|
|
|
|
|
b11->payment_secret = tal(b11, struct secret);
|
|
|
|
|
memset(b11->payment_secret, 0x11, sizeof(*b11->payment_secret));
|
|
|
|
|
if (!hex_decode("0001020304050607080900010203040506070809000102030405060708090102",
|
|
|
|
|
strlen("0001020304050607080900010203040506070809000102030405060708090102"),
|
|
|
|
|
&b11->payment_hash, sizeof(b11->payment_hash)))
|
|
|
|
|
@@ -223,12 +231,12 @@ int main(int argc, char *argv[])
|
|
|
|
|
b11->description = "1 cup coffee";
|
|
|
|
|
b11->expiry = 60;
|
|
|
|
|
|
|
|
|
|
test_b11("lnbc2500u1pvjluezpp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqdq5xysxxatsyp3k7enxv4jsxqzpuaztrnwngzn3kdzw5hydlzf03qdgm2hdq27cqv3agm2awhz5se903vruatfhq77w3ls4evs3ch9zw97j25emudupq63nyw24cg27h2rspfj9srp", b11, NULL);
|
|
|
|
|
test_b11("lnbc2500u1pvjluezsp5zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zygspp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqdq5xysxxatsyp3k7enxv4jsxqzpuu4tgyw2zt3v3c7eljkv2cn8a3etgn8kh8ukctqdmuxdfa7xup0w5ruwpt6eugv73pgzqczz3nc8tcqt2pcljp8ldkrnu5klff35vyscq6lp6ja", b11, NULL);
|
|
|
|
|
|
|
|
|
|
/* BOLT #11:
|
|
|
|
|
*
|
|
|
|
|
* > ### Now send $24 for an entire list of things (hashed)
|
|
|
|
|
* > lnbc20m1pvjluezpp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqhp58yjmdan79s6qqdhdzgynm4zwqd5d7xmw5fk98klysy043l2ahrqscc6gd6ql3jrc5yzme8v4ntcewwz5cnw92tz0pc8qcuufvq7khhr8wpald05e92xw006sq94mg8v2ndf4sefvf9sygkshp5zfem29trqq2yxxz7
|
|
|
|
|
* > lnbc20m1pvjluezsp5zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zygspp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqhp58yjmdan79s6qqdhdzgynm4zwqd5d7xmw5fk98klysy043l2ahrqs6e4fy93me7wjwdf9sxgrzr8xldm570z02ur92rv6pa7wkhzpfehnecuyhp4mdhsv5t7em4jz4tjtchs8zmx3tr555yl59lk848due0gqvkanpl
|
|
|
|
|
*
|
|
|
|
|
* Breakdown:
|
|
|
|
|
*
|
|
|
|
|
@@ -236,24 +244,27 @@ int main(int argc, char *argv[])
|
|
|
|
|
* * `20m`: amount (20 milli-bitcoin)
|
|
|
|
|
* * `1`: Bech32 separator
|
|
|
|
|
* * `pvjluez`: timestamp (1496314658)
|
|
|
|
|
* * `s`: payment secret...
|
|
|
|
|
* * `p`: payment hash...
|
|
|
|
|
* * `h`: tagged field: hash of description
|
|
|
|
|
* * `p5`: `data_length` (`p` = 1, `5` = 20; 1 * 32 + 20 == 52)
|
|
|
|
|
* * `8yjmdan79s6qqdhdzgynm4zwqd5d7xmw5fk98klysy043l2ahrqs`: SHA256 of 'One piece of chocolate cake, one icecream cone, one pickle, one slice of swiss cheese, one slice of salami, one lollypop, one piece of cherry pie, one sausage, one cupcake, and one slice of watermelon'
|
|
|
|
|
* * `cc6gd6ql3jrc5yzme8v4ntcewwz5cnw92tz0pc8qcuufvq7khhr8wpald05e92xw006sq94mg8v2ndf4sefvf9sygkshp5zfem29trqq`: signature
|
|
|
|
|
* * `2yxxz7`: Bech32 checksum
|
|
|
|
|
* * `6e4fy93me7wjwdf9sxgrzr8xldm570z02ur92rv6pa7wkhzpfehnecuyhp4mdhsv5t7em4jz4tjtchs8zmx3tr555yl59lk848due0gq`: signature
|
|
|
|
|
* * `vkanpl`: Bech32 checksum
|
|
|
|
|
*/
|
|
|
|
|
msatoshi = AMOUNT_MSAT(20 * (1000ULL * 100000000) / 1000);
|
|
|
|
|
b11 = new_bolt11(tmpctx, &msatoshi);
|
|
|
|
|
b11->chain = chainparams_for_network("bitcoin");
|
|
|
|
|
b11->timestamp = 1496314658;
|
|
|
|
|
b11->payment_secret = tal(b11, struct secret);
|
|
|
|
|
memset(b11->payment_secret, 0x11, sizeof(*b11->payment_secret));
|
|
|
|
|
if (!hex_decode("0001020304050607080900010203040506070809000102030405060708090102",
|
|
|
|
|
strlen("0001020304050607080900010203040506070809000102030405060708090102"),
|
|
|
|
|
&b11->payment_hash, sizeof(b11->payment_hash)))
|
|
|
|
|
abort();
|
|
|
|
|
b11->receiver_id = node;
|
|
|
|
|
b11->description_hash = tal(b11, struct sha256);
|
|
|
|
|
test_b11("lnbc20m1pvjluezpp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqhp58yjmdan79s6qqdhdzgynm4zwqd5d7xmw5fk98klysy043l2ahrqscc6gd6ql3jrc5yzme8v4ntcewwz5cnw92tz0pc8qcuufvq7khhr8wpald05e92xw006sq94mg8v2ndf4sefvf9sygkshp5zfem29trqq2yxxz7", b11, "One piece of chocolate cake, one icecream cone, one pickle, one slice of swiss cheese, one slice of salami, one lollypop, one piece of cherry pie, one sausage, one cupcake, and one slice of watermelon");
|
|
|
|
|
test_b11("lnbc20m1pvjluezsp5zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zygspp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqhp58yjmdan79s6qqdhdzgynm4zwqd5d7xmw5fk98klysy043l2ahrqs6e4fy93me7wjwdf9sxgrzr8xldm570z02ur92rv6pa7wkhzpfehnecuyhp4mdhsv5t7em4jz4tjtchs8zmx3tr555yl59lk848due0gqvkanpl", b11, "One piece of chocolate cake, one icecream cone, one pickle, one slice of swiss cheese, one slice of salami, one lollypop, one piece of cherry pie, one sausage, one cupcake, and one slice of watermelon");
|
|
|
|
|
|
|
|
|
|
/* Malformed bolt11 strings (no '1'). */
|
|
|
|
|
badstr = "lnbc20mpvjluezpp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqhp58yjmdan79s6qqdhdzgynm4zwqd5d7xmw5fk98klysy043l2ahrqscc6gd6ql3jrc5yzme8v4ntcewwz5cnw92tz0pc8qcuufvq7khhr8wpald05e92xw006sq94mg8v2ndf4sefvf9sygkshp5zfem29trqq2yxxz7";
|
|
|
|
|
@@ -326,7 +337,7 @@ int main(int argc, char *argv[])
|
|
|
|
|
* * `9`: features
|
|
|
|
|
* * `q5`: `data_length` (`q` = 0, `5` = 20; 0 * 32 + 20 == 20)
|
|
|
|
|
* * `sqqqqqqqqqqqqqqqpqsq`: b1000....00001000001000000000
|
|
|
|
|
** `67gye39hfg3zd8rgc8032tvy9xk2xunwm5lzexnvpx6fd77en8qaq424dxgt56cag2dpt359k3ssyhetktkpqh24jqnjyw6uqd08sgp`: signature
|
|
|
|
|
** `67gye39hfg3zd8rgc80k32tvy9xk2xunwm5lzexnvpx6fd77en8qaq424dxgt56cag2dpt359k3ssyhetktkpqh24jqnjyw6uqd08sgp`: signature
|
|
|
|
|
** `tq44qu`: Bech32 checksum
|
|
|
|
|
*/
|
|
|
|
|
msatoshi = AMOUNT_MSAT(25 * (1000ULL * 100000000) / 1000);
|
|
|
|
|
@@ -474,7 +485,7 @@ int main(int argc, char *argv[])
|
|
|
|
|
/* BOLT #11:
|
|
|
|
|
*
|
|
|
|
|
* > ### Please send 0.00967878534 BTC for a list of items within one week, amount in pico-BTC
|
|
|
|
|
* > lnbc9678785340p1pwmna7lpp5gc3xfm08u9qy06djf8dfflhugl6p7lgza6dsjxq454gxhj9t7a0sd8dgfkx7cmtwd68yetpd5s9xar0wfjn5gpc8qhrsdfq24f5ggrxdaezqsnvda3kkum5wfjkzmfqf3jkgem9wgsyuctwdus9xgrcyqcjcgpzgfskx6eqf9hzqnteypzxz7fzypfhg6trddjhygrcyqezcgpzfysywmm5ypxxjemgw3hxjmn8yptk7untd9hxwg3q2d6xjcmtv4ezq7pqxgsxzmnyyqcjqmt0wfjjq6t5v4khxxqyjw5qcqp2rzjq0gxwkzc8w6323m55m4jyxcjwmy7stt9hwkwe2qxmy8zpsgg7jcuwz87fcqqeuqqqyqqqqlgqqqqn3qq9qn07ytgrxxzad9hc4xt3mawjjt8znfv8xzscs7007v9gh9j569lencxa8xeujzkxs0uamak9aln6ez02uunw6rd2ht2sqe4hz8thcdagpleym0j
|
|
|
|
|
* > lnbc9678785340p1pwmna7lpp5gc3xfm08u9qy06djf8dfflhugl6p7lgza6dsjxq454gxhj9t7a0sd8dgfkx7cmtwd68yetpd5s9xar0wfjn5gpc8qhrsdfq24f5ggrxdaezqsnvda3kkum5wfjkzmfqf3jkgem9wgsyuctwdus9xgrcyqcjcgpzgfskx6eqf9hzqnteypzxz7fzypfhg6trddjhygrcyqezcgpzfysywmm5ypxxjemgw3hxjmn8yptk7untd9hxwg3q2d6xjcmtv4ezq7pqxgsxzmnyyqcjqmt0wfjjq6t5v4khxsp5zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zygsxqyjw5qcqp2rzjq0gxwkzc8w6323m55m4jyxcjwmy7stt9hwkwe2qxmy8zpsgg7jcuwz87fcqqeuqqqyqqqqlgqqqqn3qq9q0777th7sgnqqpykcmu4c2u65vtnefrnjzws78maaxy87euvpj0hr8t5ma58cyw5f3f9ej4aw9swcyvk4vp6vjlxtgpcfdy8u9m4c6wgpdqfxt2
|
|
|
|
|
*
|
|
|
|
|
* Breakdown:
|
|
|
|
|
*
|
|
|
|
|
@@ -482,7 +493,8 @@ int main(int argc, char *argv[])
|
|
|
|
|
* * `9678785340p`: amount (9678785340 pico-bitcoin = 967878534 milli satoshi)
|
|
|
|
|
* * `1`: Bech32 separator
|
|
|
|
|
* * `pwmna7l`: timestamp (1572468703)
|
|
|
|
|
* * `p`: payment hash.
|
|
|
|
|
* * `s`: payment secret...
|
|
|
|
|
* * `p`: payment hash
|
|
|
|
|
* * `p5`: `data_length` (`p` = 1, `5` = 20; 1 * 32 + 20 == 52)
|
|
|
|
|
* * `gc3xfm08u9qy06djf8dfflhugl6p7lgza6dsjxq454gxhj9t7a0s`: payment hash 462264ede7e14047e9b249da94fefc47f41f7d02ee9b091815a5506bc8abf75f
|
|
|
|
|
* * `d`: short description
|
|
|
|
|
@@ -502,8 +514,8 @@ int main(int argc, char *argv[])
|
|
|
|
|
* * fee_base_msat = 1000
|
|
|
|
|
* * fee_proportional_millionths = 2500
|
|
|
|
|
* * cltv_expiry_delta = 40
|
|
|
|
|
* * `n07ytgrxxzad9hc4xt3mawjjt8znfv8xzscs7007v9gh9j569lencxa8xeujzkxs0uamak9aln6ez02uunw6rd2ht2sqe4hz8thcdagp`: signature
|
|
|
|
|
* * `leym0j`: Bech32 checksum
|
|
|
|
|
* * `0777th7sgnqqpykcmu4c2u65vtnefrnjzws78maaxy87euvpj0hr8t5ma58cyw5f3f9ej4aw9swcyvk4vp6vjlxtgpcfdy8u9m4c6wgp`: signature
|
|
|
|
|
* * `dqfxt2`: Bech32 checksum
|
|
|
|
|
*/
|
|
|
|
|
msatoshi = AMOUNT_MSAT(967878534);
|
|
|
|
|
b11 = new_bolt11(tmpctx, &msatoshi);
|
|
|
|
|
|