Add Mainnet Canopy block test vectors

Including one block that just happened to be 72 kB, in binary format.
This commit is contained in:
teor 2021-03-16 11:30:54 +10:00 committed by Deirdre Connolly
parent 873127aac1
commit 8444b78e01
5 changed files with 29 additions and 6 deletions

View File

@ -0,0 +1 @@
04000000d2fb294141b1c692681d11e2118566b021e25ed6c07aa0ca5bedf1000000000070cdf7ffd6ae0d1acec03627a27c44c813284cfb107c9df6682ee2a2abe1cc59567586ffd5fb09b349c149385f5b6ea544370172737b05e54007b1869031d8f5c214b55f2e16021cf803a43f00000000000000000000000000000200000000000000000000009de8fd400500ddfe68ea5d29b1536591da5b1980ba45fa1634ce18cd7a4eab15f370c7a0422e3236865d143e59b7940f1242bf66c5eaa2b001b21dd330fd7db3908f62c012ecb4943116451d77bb61ac4374402ad4301c59112218794c84d84d117f7c2397f4556ede0f895e391e2c920f179f681021b4e654681f6b5665222b1505a32dbfcbb72f9f3c94fdd5690ef5e6f3527fef59740b37a3ff6220603d11b0123583c2e7669d8a1893008705d205ab106cf30df05431e30fb15304da4916d4502425879e6be10b992bd71560d3b3bbd9a3d01de93212cba18eada34b57a722231aac6b08c11e0f3790e215f9d686769edb655011a4bb88d065e9660a7ed5310881ca97de312b8bb57321a91744f715585ab537620af68dd5eedba7bb5f70e2ed707723a228fa74be101c04f21efa13cd9de8c7c272c12dc85b54aa9f88196bf60563cda765879929c72c7b3f199e2b7cf62c79017fbe5582a3ed47e654c4be97d14e220aebdc896e0e4c2bb379b33067fc2ec2d0269da6e971d5342a2c0af9beb98885a05f60f5646548d6a8339d06dfa4ec54fe373c292d4143c82f2591ac66291f657b9b848e1b88d4a0bc4a8c87adac7234926dcee118c05eedf34da06508f0a484b5688975128a39745619533e04da1eed3c594d342c05fccfc30903ba75e1526356ac1534d95651a3d538a1c464e880ee6eaafb360ebb3685069dadd85fe92153acdb637ba1d4b1111ab33a3fbe4d1592bcb5e6a44fbf1356c46edf638ad78c19fb3916239e347f171366c3cee3c66c77bec50025d7e65139948e9d7bd1b9abe340242896f852c3b1dcbfc67c11152e8e74c7da417ab5e11c1d0ec52121691fb1234e1e94e560204e23cef529d385732727ea483fa1bc13e29639d5c5b2aea5d502ddd5318a710cfadf74a4489eee7451eb8353a2b5b59fd9e910bb6a2ebd7f09021c8fca20dfd425a0b4862df5f5850731bc5d8c7e14c0662bba0cf72acab021682ec558d1c045945983069a6bfe6d466eccb3f01169677265b5a64956872b0a58121c656570a96c368212ba597c99603bb13f1402962a82198f16b56ffb990f7f6734b734e9bf25222429f172ed896eaae7970306109bcd895ccf108f6b0fd2b0a17d14b85d72b5f5ccbaed0496b61c3e7fd42fd7bd17a0627e77454a993489621b76e800fc9f78051251faa6a275c7853cf6f2a071986718a71fb5a90ca65e95df09068b6aabd208f8a5c9ca55517345c93c7113f4ca685289c24006dcb9e3317a5b07f86a9a4ec745a6135fd1376fc23534cf66440aab9b1aff720e307d7d71271e599af5b15b33a77cdcb02abf04475279b600c4ebe341762e961261dc3e21ebbf9da97c26408fcae835f7a9dda685670866d4d9756f365511449d54b990e6ee31d10fd589b0dc10c1a73e8d42f002acec98bfd87ba5773a00b0c594ace8a50df785440d58011f93a025bfea9a0120754ca8af993c5fed5d0466ea7eff613311af675480a52ebbe521c2de4ae40dfd9c6053d2180b3758a2bc8c604ce90a4cbcc23a16e45d2af21a19e3be9c72b544b7c66d4c12b79bdd375a34ded4d66260f766b4081743633605dc35d0e620110cf14adfafe990e2025fbe27cd15aded7a65b845a1ad1a026f7c13e951564bacfdb3db63a61dc76402fb2b44250f588cdd9632f99b58b33965fe729ded12a4e9853a8ecc254825a660d566da39c9a9585d01193b89aea3a7a63dc1cfc27f4453036d3e585fb60c41dec7b493685fc5a16e3984cc6a4042c1bfbc1d4903c414dfdd44a5044db044648d69c2463fe1f9ae0f0d698f2248d267c9cd0b229dbbcbb5328f4a5955c911a201e1a0d3a1b3d6ffd147f43e0d1d4946b61d744e2d2e2913206e0b4ec4352c10b58b3179d856d502010400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff05037ff70f00ffffffff020065cd1d000000001976a914be62da59de8993dd79965ddd27629b1ffe55e46e88ac405973070000000017a9143770b379a58159d907f6b83868ca65e1a450753a8700000000000000000000000000000000000000

View File

@ -0,0 +1 @@
040000008c739e06a2b504ce080d86112d26e60f3f3c4ab7d8cd59b2573916000000000065f41fdaa837e7ab65f743883e8ba3fec6a78130ad280bdca90232bbdabd4aba3c008b249a9bda2c022c3188b86f8e3ea5f839fecfe1003b37e5e04f8f8a2148c814b55f5213021c1304783146d10c0300000000000000000000000000000000000000006fe95eacfd40050023a558af567945f27ae37099acd46a552cd67acd041c67ce81ee440d9d29904b80ab2c80c56fed95dd11749f01f4af279d7c5035b334461b92e5565c60e92d75ece1b03825b9f6bc34946edff9c30ec77ba08209c010d4210c9cc2d623b1b9a0340a2076c8b336980f7dea5197f862b1ebde56908bbedfe2db7dbbd5eb23d8cac929dc13319c4dc4fd5a481ded8b03edac12281bbb76140a908d968614691ad4bbe56eb19c5bd602ba9fef2b873f50dd2130e6a0de6c80daa49c3e7610d440ef9dcdc247877d510fcb2dca2d09723f9d7611d26d2f8297e16db7baa36e5c32b1619e7a0d887d287d93d59ae6c8f3c183481be0cc6ac60a63db3b35043d3374e24e693d4a331132bac8ac14a6bbd1f4d011f3737ad08fec9718b62541a7b6350697e8363c901eeac97c82340565f4d523ac8c217531730ddeb528272b5f0a02e21edb8f76034e2cd5184775b51cf66c01bb40b7ac5158590406740982230b7db1886e6b9a072e2907085edbf7bf0a20add334a7aeb6009651f12c72db5c33da0a5b606f931231c5ba9f0cd7da3cd0541384f4c25610e1944ab54b4dfb496d57e90e8ab702daf8db6d2a7cb35dfce067e9288270ac68599f1a034f4ddd8ded26b3a78f2271ef53d03e5af8b5dbbe04f679cc8af31795a881e25257218d32d38c99a4e9515df6d334a26f396419cb7f4667bc7f116e590df802d60462d1cc4618715f406429e7f2fdb7a85be76817ce8a330de2e08d6866663349ef247b365ede69ee10d6fff2066b5989a6f0d2064af370599a3d96428a54395b3b78556e1f1ff2a5f6edc4ed5ebbc836b19505169554550730e4905c13f1232de36f62007fb13b0dce6ea86684dea593d7125888a6b0668b197497200a9bab485d85a1827648c0d1afaae58991185b2fed521d23b00758d54cf26ba66f56fbf39f06c27873700139248e2707bb47657a702cdf87c9f6bb031963c0146220c03a58dfff8962a4661a5269a53037327a36056a92f730c713c31d5e6534dd38181574ab8f84c71653ee210dd45be72cfa15948252868972fc1d22430296e7c9c341cb60fe1522a4773e2c90ac07c9c0b0149d6548c88e4ad770a3a2478055a52f474e1baa160acc54bf3a87805a723cc18373ab3db12a6bead7af29ca295e2e9b395da59d037f14e612695fc5b353680215d5bf0e4aee7d1af0320dc9b7b305302f5abdab288b97002c12d919c3dfc31bfc65792dd336d796bc040f07ab84795055d89f90db54ab30c8c31feb20e5043d50b155ef17cdc1399345fced6578eb905e7cc90e0e8e9e84e23139e340c1e972bf7291d0b7afe6e00ff91ef44133ea25c88268e6efdcd27672be7e76ce17101b6f6ecf64e2d69223dc30b38c26840c9ba3478dcd4d2fabf0bfd5f0ccea880f577bdaf0e1bda340027a64d292c0f5bb93827469fe69c8d210545ad06517e9bb3b7452a9817edf44f8786d904ab6b0172ada07a86a0101f0415da931958370c11451dd2cf0774c2dde2a221a52c7a4e016351a8b63c3a97c2ebef3f60379613f03c981f7278313469cc6036996d65ca3fe53984348779585abb94dd5835dfb19dd6feb3e12ea2721e54a22237cd1960c2464f2a71dcd92911ec76039c835874917db11c04853d5eeabdaa51acc8a89b809a9fb2c9791d33168ca527407f6d5f4e30c17670011182d86358d23bce2267411abb1b2f5624bf689cf10811ae1838d4e5d52fb2265ee2a5f731d073bb378117fb63a3de2fa814a44a262f06ffc81e75855634410f391b4aad7bc82daf9313efceb12605f7153e2f02b263d22faa4c0718a4449834fd24caf3cfc9af9ac1e22dd94a37391e3f2e556471d6b1c335785bc19a02f9d3c93efd2521db05373ced8760aaa2e6d3ee799010400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff050380f70f00ffffffff0480b2e60e000000001976a914588219b4d6bba2e535c2f92af7f85f5687ce82ce88ac38c94d010000000017a91418304d852fb0f7cba26908c85a5573933be60cb28740787d010000000017a914931fec54c1fea86e574462cc32013f5400b8912987286bee000000000017a914d45cb1adffb5215a42720532a076f02c7c778c908700000000000000000000000000000000000000

Binary file not shown.

View File

@ -0,0 +1 @@
04000000f2e94c8ecbb5398ea71b920efe058639edb8a3caaa5e08a7a746920000000000bbc9e4c8ab69b7e9fd48542e622518e3d17f0c28c2bea4bfa9546bc4335e46850376d888c704bc035aba2879271f519e5f5788d378fbb7d2db6a5007ef765e8db3d94f6057ae011cf89d36d200000000000000000000000000000700000000000000000000011333fd4005003a74a5c982672fb13ce414d674e785cf94303d4d0fd2561839aac001b3808678fbee15b5ad4b57d7852a69fa69fe996c0fd21f184548d1ca72271d13d13432c24cb54bd3a10f021b08c4cee2933af4d818d4940c9c0a31fd4ca834d68922fef23029118f4b7c97361a7ae245dd13faa7f6f0854ec5cef42e8ada9742d00f3042af7d6eeb2bb94775219bbb88ea9a30bf93e217e0212cb2c81ac4b90e85707361f8135ce6dcec1202d2b8987f89feb70b74006c00e1a72d5b625784e5187571b201da39db892664f46976615f5c95bdbcd70c83588f1ac685be99a42177b2701982a968df8be91153ac2066a03583ea8644c14f4c5bc2c55fdb9d7f0335efbe1bda4a71dabae0504e30f5c1276f2de54e1c62defd79a29c6139ff54ed4b276e8a2d1fdda94c076f2bc9431810df328b04f5873bdba620dc799c5c25d49f51815c2085b43a6819d061939a503619727e00c8f6c74a85014fda83e3681aead92abfb29f79562610abd25915a465235e6711e9b9fdc244da9b92590106e8302c092575406f435b8b799f3bc4a0dfc40d07a8cfa2aa8e648d88a19217fdc4ecdca0a57a586212041ffb368b07ab17ca669b487af55e32993e05dc41de87fd666136f183f7c5c12a431b16fc7198c8db2cc095b546d01e5bc8da836f515d5912a3739606f835a6ba7c169b8147804e1a9677e25493132639c9df093cbef22fa4ce0d95186138ffb4d1f5f79d1a0cdb0f9cadb339d76fddcc8022b67225c44f2c477e607f10175ef9cb0d2e73e8886118a2a4e53945457d6c9921533c6a39533cac9b382251ce5c1ad15d0c589c490cd089dd17da1291b0c3517bd8154999db605c71af0eb42662fb4e3612d098959303d82f6b1d2dfe507a3afdc48085d51799926f244cdf2bb179c146bb26416dd945f6f92232b564fcfa0feb576adaebb41ae23503d8326953ad091f7463c224b9e64a3cd058f232e20bd0abeeae65870ba587b47e2dcc7761522075758d04d80418c81d8709ed0fe1ffbe7b22f57442ce309a098fd6c4a084c4ed8250b59c82d1056de2313349650d8cc07d3b1a14f0eb6541333bb8d038cef789d10527272dfc171acae59cbff836fc7f2cb3395e7c6f8f2c292a112d0f6d114c120462114f170121a749d50a38f89bdc30d698bfe89ac5e9d663c3fd8075bcb1b204a4d636a58a14f7cb12f34d196624612ca54b1d9c074d2d94c8a9f791c800384e5a50f93311b8bea0ef067c9d01a188bd4282cfe35117ae052eee26da749625ed31d13eceed430592041bf15d23c27903df20d81a79f10b140e3418812441ac59ddea89a78b7a2c70207fd97d06173187387933cdc6fd5f2d4118cf45b1234b8a0110234099c6e433a7606756b93ca74f52cf60d905d5a7e31129faa05ae08af4282f44f99adbfe056863d02b99cbd9471c05a8d87edd09d5c6fbf34b07ceb6831097450502f6b34e3475c36e07019a57150aeea9903fc484dd23c445765df5593ac1749e00ca1bf233ab01a3b40d84e1d6a6a1dc4099d2380f61070a117e63ae89f731795d20f435fee242c3be3f85bf39d76669a3f64f2fcffc4507acb1979af31c7ddfa223cf6e47d40900a345d8c498f1334bed862dbd735f252d23c28292c24d8f70b73b6341f849cfd1dd96e2082ec22e1e759997bc4fb10115af4ff56eafebfd872df1baa35e1264fdb28ca4bc51affc5602ee706cd8084cef71d8d696e4b553d0ac367c5449918134d2882735ba2a5a2a96bde66214223cbc1ab1a1f0efa9190d3715e38ed9e46b041a810ca9ef76a8d580305f4a10d52dfd2175e3e1e37eb52e6348be796f2b92f2a21cbc53c6e409d5c58942e344b3b4bff50bee0d449225f4dc70149538f352ff25bbaa733159c8eabb3d47010400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff1103e40412002f706f6f6c696e2e636f6d2fffffffff0480b2e60e000000001976a914be62da59de8993dd79965ddd27629b1ffe55e46e88ac40787d010000000017a914931fec54c1fea86e574462cc32013f5400b891298738c94d010000000017a914a85005215405d5931d4c7090e164add7f458f1e287286bee000000000017a914d45cb1adffb5215a42720532a076f02c7c778c908700000000000000000000000000000000000000

View File

@ -82,7 +82,12 @@ lazy_static! {
(949_496, BLOCK_MAINNET_949496_BYTES.as_ref()),
(975_066, BLOCK_MAINNET_975066_BYTES.as_ref()),
(982_681, BLOCK_MAINNET_982681_BYTES.as_ref()),
// TODO: Canopy and First Halving, see #1099
// Last Heartwood
(1_046_399, BLOCK_MAINNET_1046399_BYTES.as_ref()),
// Canopy and First Coinbase Halving
(1_046_400, BLOCK_MAINNET_1046400_BYTES.as_ref()),
(1_046_401, BLOCK_MAINNET_1046401_BYTES.as_ref()),
(1_180_900, BLOCK_MAINNET_1180900_BYTES.as_ref()),
].iter().cloned().collect();
/// Testnet blocks, indexed by height
@ -276,14 +281,29 @@ lazy_static! {
<Vec<u8>>::from_hex(include_str!("block-main-0-982-681.txt").trim())
.expect("Block bytes are in valid hex representation");
// TODO: Canopy transition, after mainnet canopy activation
// for i in 1046399 1046400 1046401; do
// Canopy transition and Coinbase Halving
// (On mainnet, Canopy happens at the same block as the first coinbase halving)
// for i in 1046399 1046400; do
// zcash-cli getblock $i 0 > block-main-$[i/1000000]-0$[i/1000%1000]-$[i%1000].txt
// done
pub static ref BLOCK_MAINNET_1046399_BYTES: Vec<u8> =
<Vec<u8>>::from_hex(include_str!("block-main-1-046-399.txt").trim())
.expect("Block bytes are in valid hex representation");
pub static ref BLOCK_MAINNET_1046400_BYTES: Vec<u8> =
<Vec<u8>>::from_hex(include_str!("block-main-1-046-400.txt").trim())
.expect("Block bytes are in valid hex representation");
// Block 1046401 is 72 kB in size (currently the second-largest test vector), so we store it in binary.
// i=1046401
// zcash-cli getblock $i 0 | xxd -revert -plain > block-main-$[i/1000000]-0$[i/1000%1000]-$[i%1000].bin
pub static ref BLOCK_MAINNET_1046401_BYTES: Vec<u8> = include_bytes!("block-main-1-046-401.bin").to_vec();
// TODO: one more Canopy Mainnet block
// (so that we have at least 3 blocks from Canopy)
// Note: don't use the highest block, it must be below the reorg limit!
// One more Canopy/Post-Halving block
// (so that we have at least 3 blocks after canopy/halving)
// i=1180900
// zcash-cli getblock $i 0 > block-main-$[i/1000000]-$[i/1000%1000]-$[i%1000].txt
pub static ref BLOCK_MAINNET_1180900_BYTES: Vec<u8> =
<Vec<u8>>::from_hex(include_str!("block-main-1-180-900.txt").trim())
.expect("Block bytes are in valid hex representation");
// Testnet