Add testnet blocks to zebra_state (#770)

* add testnet blocks, use them in state tests

* remove mutex and just add more transcripts

Co-authored-by: Jane Lusby <jane@zfnd.org>
This commit is contained in:
Alfredo Garcia 2020-08-04 17:39:32 -03:00 committed by GitHub
parent e037466e26
commit 70597c1da3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 106 additions and 40 deletions

View File

@ -7,46 +7,93 @@ use zebra_test::transcript::{TransError, Transcript};
use zebra_state::*;
static ADD_BLOCK_TRANSCRIPT: Lazy<Vec<(Request, Result<Response, TransError>)>> = Lazy::new(|| {
let block: Arc<_> =
Block::zcash_deserialize(&zebra_test::vectors::BLOCK_MAINNET_415000_BYTES[..])
.unwrap()
.into();
let hash = block.as_ref().into();
vec![
(
Request::AddBlock {
block: block.clone(),
},
Ok(Response::Added { hash }),
),
(Request::GetBlock { hash }, Ok(Response::Block { block })),
]
});
static ADD_BLOCK_TRANSCRIPT_MAINNET: Lazy<Vec<(Request, Result<Response, TransError>)>> =
Lazy::new(|| {
let block: Arc<_> =
Block::zcash_deserialize(&zebra_test::vectors::BLOCK_MAINNET_415000_BYTES[..])
.unwrap()
.into();
let hash = block.as_ref().into();
vec![
(
Request::AddBlock {
block: block.clone(),
},
Ok(Response::Added { hash }),
),
(Request::GetBlock { hash }, Ok(Response::Block { block })),
]
});
static GET_TIP_TRANSCRIPT: Lazy<Vec<(Request, Result<Response, TransError>)>> = Lazy::new(|| {
let block0: Arc<_> =
Block::zcash_deserialize(&zebra_test::vectors::BLOCK_MAINNET_GENESIS_BYTES[..])
.unwrap()
.into();
let block1: Arc<_> = Block::zcash_deserialize(&zebra_test::vectors::BLOCK_MAINNET_1_BYTES[..])
.unwrap()
.into();
let hash0 = block0.as_ref().into();
let hash1 = block1.as_ref().into();
vec![
// Insert higher block first, lower block second
(
Request::AddBlock { block: block1 },
Ok(Response::Added { hash: hash1 }),
),
(
Request::AddBlock { block: block0 },
Ok(Response::Added { hash: hash0 }),
),
(Request::GetTip, Ok(Response::Tip { hash: hash1 })),
]
});
static ADD_BLOCK_TRANSCRIPT_TESTNET: Lazy<Vec<(Request, Result<Response, TransError>)>> =
Lazy::new(|| {
let block: Arc<_> =
Block::zcash_deserialize(&zebra_test::vectors::BLOCK_TESTNET_10_BYTES[..])
.unwrap()
.into();
let hash = block.as_ref().into();
vec![
(
Request::AddBlock {
block: block.clone(),
},
Ok(Response::Added { hash }),
),
(Request::GetBlock { hash }, Ok(Response::Block { block })),
]
});
static GET_TIP_TRANSCRIPT_MAINNET: Lazy<Vec<(Request, Result<Response, TransError>)>> =
Lazy::new(|| {
let block0: Arc<_> =
Block::zcash_deserialize(&zebra_test::vectors::BLOCK_MAINNET_GENESIS_BYTES[..])
.unwrap()
.into();
let block1: Arc<_> =
Block::zcash_deserialize(&zebra_test::vectors::BLOCK_MAINNET_1_BYTES[..])
.unwrap()
.into();
let hash0 = block0.as_ref().into();
let hash1 = block1.as_ref().into();
vec![
// Insert higher block first, lower block second
(
Request::AddBlock { block: block1 },
Ok(Response::Added { hash: hash1 }),
),
(
Request::AddBlock { block: block0 },
Ok(Response::Added { hash: hash0 }),
),
(Request::GetTip, Ok(Response::Tip { hash: hash1 })),
]
});
static GET_TIP_TRANSCRIPT_TESTNET: Lazy<Vec<(Request, Result<Response, TransError>)>> =
Lazy::new(|| {
let block0: Arc<_> =
Block::zcash_deserialize(&zebra_test::vectors::BLOCK_TESTNET_GENESIS_BYTES[..])
.unwrap()
.into();
let block1: Arc<_> =
Block::zcash_deserialize(&zebra_test::vectors::BLOCK_TESTNET_10_BYTES[..])
.unwrap()
.into();
let hash0 = block0.as_ref().into();
let hash1 = block1.as_ref().into();
vec![
// Insert higher block first, lower block second
(
Request::AddBlock { block: block1 },
Ok(Response::Added { hash: hash1 }),
),
(
Request::AddBlock { block: block0 },
Ok(Response::Added { hash: hash0 }),
),
(Request::GetTip, Ok(Response::Tip { hash: hash1 })),
]
});
#[tokio::test]
async fn check_transcripts_mainnet() -> Result<(), Report> {
@ -62,7 +109,13 @@ async fn check_transcripts_testnet() -> Result<(), Report> {
async fn check_transcripts(network: Network) -> Result<(), Report> {
zebra_test::init();
for transcript_data in &[&ADD_BLOCK_TRANSCRIPT, &GET_TIP_TRANSCRIPT] {
let mainnet_transcript = &[&ADD_BLOCK_TRANSCRIPT_TESTNET, &GET_TIP_TRANSCRIPT_TESTNET];
let testnet_transcript = &[&ADD_BLOCK_TRANSCRIPT_MAINNET, &GET_TIP_TRANSCRIPT_MAINNET];
for transcript_data in match network {
Network::Testnet => testnet_transcript,
_ => mainnet_transcript,
} {
let service = in_memory::init();
let transcript = Transcript::from(transcript_data.iter().cloned());
/// SPANDOC: check the in memory service against the transcript

View File

@ -265,4 +265,17 @@ lazy_static! {
pub static ref BLOCK_MAINNET_8_BYTES: Vec<u8> = <Vec<u8>>::from_hex("04000000045ae2a7ae1a5ea25a3d531dde8a42f5bb20f67f49d930acacd98fae05b8040003de449d65aec6f3c2dadf9a53a5e3dff9d972a41ba6f034fcbbe6e86f2e777a0000000000000000000000000000000000000000000000000000000000000000147b1358ffff071fa5556cd0fb280000000000000000000000000000000000000000000000000000fd4005001235028584cb4d1b9f928d34441d86ee727fa0f90f79f4fa8c09d681c0a143283c302af3706adde77e143a694bf163b759f17574989f3b0277b11a7e780e16f8afe5aa632be73ad5fa5fd3fb3602e985fa3add0341fc63b08eb93f9c5e63467f752c49fc25cfea5d0916c6ff4e4c1d427ad634d77836ceaed2f4daeb8126f7775c0ff0495da4a0e414c8e57d49bf74529359554713c2a32a9e35e4097593d6360cf99f991cf17a03e04d7b90422edbfa6e9086d77408d1c592ff22551bee749f10d73fdf048e52c5d75dc926519a9ad8fc0ab48bab37abbd07d3e770b56eff92cd7158f0e3963cc072aa459c6535c9176832a745eddf4c20be8cfb050bb67009c7c17570ab45a227fb8005846dd2014405da319b55c28bdea270b4da58bc613af78a9ebfcb081b54ae9b9f28bdeef513fc9623a2e5b5fb345cdb278b0c3a971c2f5beb74038df6c951738ae29df8d300d3ec7c18501b74ae166505ec46bb9143dd1290cb014a68613103353b8d42d0f671b348b4835dfc88cd01dd60ed698e3445c8a6e1c698bf6691b7a9bb07a41942d1e280e3ac235718732f78c2675df4a5968d1605f2bd7ca54386c67328e7a645d9bd42a657f8d01c06d5bde9cf06bc68af3a91b1e7f3b1fa8a301bc84911ef6937beeb5dc98ed5e21d8a2345ed71965076534d42d6769ce0f1f754781b8f08732f274f679f880202373e9f4bf45afbb786c15031246991d64851f3b65c74451b67dd482dad69274ec07e4721eb005d805d08add53956c3fec6a958235429e874e1ec44735bdd0f50b4a8b0ca3debd5c7a1588866f9b15aabfe3b1a1817047acbccdaf779c142f626d0245625d558dcf54122f58086f1b30fa24ec5a3a5eea48de90f9a7644242955324420c3a9b8c68351c2a28769a07d72c930301bf77020d93eece767a322f45746f72512bf54d100cbbbdea701d03517f6c3264fdf93b1eb5cbb42fb155a66ee1c9133b6ba346bfa0bfbe0cb04f0f8e9c82810757766569176b516439990ed77bea4da1dc2cd43dc06efad2ff52d7fd724e0535ad16142c6b667b01b21c3b961c8c7c74d0b26a9b87defaacefe9d987d34a9f49aa9dea7b1a057aa8f38e4906ebf66ffcac8213fa25a7cc8686acd50d40e5ece1061fdd891265544e9c35776da026f22ff7add026c7d03aec0df83e9028a4f8e43039f4b59ff212b4fd9d4ed8456fa0fe709b9f6ba03c422722b4854a0383a70693b7e7d8960132fa4c78b3bd017ef399274bc48b7b0d85873bf8625fa24367ccaba215e5622d55caf13d982316d481d0627ba5e1929284fdd6b73f6693b608f10e0bb3c190c1a04728a52945ea92f131a3ca3d529718c1dc86513b862437b111585356e64e011df896541a29be4266b9c46bf7e612fb951602707423db862b4e81990d70115483b9504f8bfacb754e0966d914a1ec3b9c2b70bfb2d30de4b4ad5b4e711048ed1bd4d1d817201cf03c4ecb163051054abbf10e06ab84b3888d0ad03922fa5f6865e6070f783bdc54ae868ad32c61f36825b02d0c8f4a7915a43956a6050341fd1656518f9b21b3a2e9e4d8a32643bd581e8076c656a1a30f4dbe6eb0810b90d24c2fc88cb73c8ee45e9d95a521a394efb363c21d0b6f83821d10da81d1f761c9a5dc9de5ad0047a2fd883052a4873e183dd05d595eaaedb96c89e357be5920467da93c2f194d207bce93e7ec1d5c5130abd4513521a464ee1ebbd7c3e70debf75f15f8a9c1f914f377d16b121c25ab3eab07efe1124a915798212c46b51ff73f741e8ef756ca8cd7f816f21f7083f22acaba8fb195bcecf7f12af757a3e6e304c32dc453ae4ce6ed1d60b3517db141355e3303d55992e11d7598f5c3fe8a10f4979b686c1025771c5be1d37a6830101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff025800ffffffff02801a0600000000002321027a46eb513588b01b37ea24303f4b628afd12cc20df789fede0921e43cad3e875aca08601000000000017a9147d46a730d31f97b1930d3368a967c309bd4d136a8700000000").expect("Block bytes are in valid hex representation");
pub static ref BLOCK_MAINNET_9_BYTES: Vec<u8> = <Vec<u8>>::from_hex("04000000012b0ebc452f335bee12d2dfd9558cd100aa29db6e55498c795c33beda770600dc7cc27c90a1b6e9a6142e3be2536f37fb117fca7db495d16ae4f31b62ab24ff00000000000000000000000000000000000000000000000000000000000000005f7b1358ffff071fa5556ccb4b000000000000000000000000000000000000000000000000000002fd4005006acfefed0dfac1235a490effda752ec897fecb01393c029e23a3269be448c7cfe24436267f25d9011502e69d803a81b2c75112e3882b63f5e9f4b99fa68630085c3163104ec2b822e42d4bf358c7878d3e236b02652b144a9a0b119e5635af07e3a8e65a153d8dd018feeea5bba9ac1defa552193bcbf7d602f1726a880ede7f9bb590ed7d0ce161c27bf314cd4e3f5edbd9171ccc15e0504dc78944753805c3423aa5e5f5b3ee079a165bfdc25edd87b4373ca2d6ae79f758bc7b7030f53e16b71d13caf43436d3703d524f464ebbe2c90f26da9b7586bed1c3244d2471eb24c3bd657f910c34779dfb1e4e09f7bcabb4c165c5b815ce636ff47617cf7c9787480d4f542a61bdb4ebb59dc60e55e73c285725e0b05bd0b3a851934cfd74f4615ed2ec0f5418235df4bf4ee9b2956035622ee80cc6019df057072d57d77df3262f159ae709598868b6e6fedb1f8502030f97cb2b9d5ef9d17ca24c2296b168d7897352d317662acf0015918757e9a99a3ae5891b982d7d9e23246886aaca9660498400e85eff7e4572262ad708ce3879c77e0e608833ea65b66a5a584386f2059f1b9f12678b870f2d40dbfc33d3ee70a41a0373cd9d99dc18573238bd48afbfa02b540ce04f8652b9771a24d63be7ad2bee3cba69f0d09baadbec1de71902d90ad6729dd62529e7f14fa89e5b1323eebec70867ff117e071d9645955e6c9dd47913409db30d6d6c03b69c610bdaef451a4bce3fecd80674dd671e6efbb47952ea2a53d457cc1857f73d7a941963ada0d5fe0e9a0b3a4450e5394de516034066d4b379375db2e8a83b62a8086641d5efd28245001cb8233c71242a93827faca73ab76c30dca58ba9bcc405cb92e51305f5d5bff6c30b1217777ee68fa97c7855dda2c6319ebc5e7f5ab562d27dc9cea9a9695bc9373a0feb855e44e138334e00be9a8da904eb31aef186fd39ee21c6e035378c4e06c8c4dd7993bd2fd76b716738b5984234e53a280304dd40d1bd17aeb4c72a92c1dab4b152f47d793f410b5bd9628c06092ddd46f1a973ef2b8080b1caa38a09d411542a0da4a92b66336c0972d260dba491ab7512009d6281f1c229b237c73db9ff1fbadabd986f2d0b471970ea4dfee8e506e0b7664562dc7a70a6b6571ffd85d1abe2ddf165a3525551ee818d683a306f3001c6dbb71991132d72f7d3d4b7b1d9b620455a75c80337be27fc06086453a4a0566d7ab17e302753e8390dcbfb0fe0ec884578ba13cec0678266c8d13678734d685d8403de5bef7f26e877c97e7d4e99f0bccec704347da2d8d12aa49b2723133fa40e2b97af7d4ff22c2ff709a45ba5e1c7d8a6491a52649dac6cbed2e70c7aca082ed7d9695498b22b99e9ca3cfe8daab5211a4cdd50e2508dc139253294433bf40689df56ab18019744a82099a6bd22f3203757b73266206b364b8d01e478bb81032ffdd361c6cfd375b28e1041d60f990b74dd3f9f4469f7dbfb849a59ff6f72cd00dcdea051521f5d1be05d75760e961530fb13163bda3ef9ad0826c7a0f89346173468d1570b0c4f34ad2c07dab617a2578a3bd2c0a76b1936b0963b1246223ef3359018e21cf2a0ece5517033e5a285bd29121c34d745b5239b99db4e2340b3c70d97b70bf6245252db9372b3026946861b143e3922b1969417dc67a5a7e1cdfc0a06f842b7c10c478b064be56aa3e76a098e853a15940f7b37438e08a6df32b0e456c1ce76b243599aa0302ce9e3b8b49156c1cacc641861d8a4830d48fad44e04827c32d048f834d189a0634583f314c265ed1037385a9f3f17b4c39dae1c43aff1c497a6de619f8def2527aeb47ccf9e42d407258a7477f40fd3dfffddc264f477e9a9f8fc53e1f687943c69a04699b4f8eed10101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff025900ffffffff02d0dd0600000000002321027a46eb513588b01b37ea24303f4b628afd12cc20df789fede0921e43cad3e875ac74b701000000000017a9147d46a730d31f97b1930d3368a967c309bd4d136a8700000000").expect("Block bytes are in valid hex representation");
pub static ref BLOCK_MAINNET_10_BYTES: Vec<u8> = <Vec<u8>>::from_hex("040000000caa280b9f75c09ec407a2026a4f578a9e1d12b4b560e381474772741f2c06004825e397cf36e2dc4d32c09924231940e14da73bdaf0d37a72d8f18a7002275f0000000000000000000000000000000000000000000000000000000000000000617b1358ffff071fa5556b2500000000000000000000000000000000000000000000000000000000fd400500778fe70985278d941565e13644e59de26059395818bcfdbe4ea2fcadf573b30269e7b576acb4db93af134dc74ff4f013158b6084633ed7084e3e2f19f0a220e589af2457cf4ff103d41114516c25759a8c825d087f853e8686bfa926f724c8b4481fe550b2cdf94a259412c28cb4a099b5d8b513fefaf1ce66607447681994029c3911814b964592b58aa660452dc9dc62474633c514619ee4ed4561a5b273d695a9dc5ffbf3da0352afb9f85815af5998154b39e3a4d96ac5575fcb0fbf0895cc95f256e7f2628b43ebd49d7baa37e9da123bb0cebaca84cd13c5f15c17759af18d973d88e32f593a62a44fac293812a82ea8c885e6f8835f81e603aedbfba0c4198bd5f59aaa515650babda3db61140cc7c29b6d329975ee7a738ba8a3bdd5cea18ffb1235738fe520ada885a4bb648202422e8e56657f40d059d8dbf50bdd66e1adab87ceb8c252fb51db1b26be05ff099ba0978db3c18a20c33a0b8e44c45188a5d2541d047ee195343fe04f77c3b1f7da72c60b1f5dde0924ff3a7b227ac3686d97857ebe9fb627bd350eb410b82a2844667d2b70b0514601c1dd0085553cb232069f550567cc1a72c2c430ff1e94d5add89f74d62d1cbeb581bb1428f94cda53e3ede73cf5d1dbfa5a67179644604f8b3b7ca1b455c59e48c6ca8ba3d5b9921d867da7b2479cb925f9f3fce8f8135165b5df7c7706e4a852fad55d13ab1020de4190e09f023affc9a42fbbfef1e795f743914c44c7a7bf242bd0a21f032d1cab9dea6a97588cda66d405e44b5fe2d680ddfcc83c47dec15f2cf55395018826f0c57ef649455b01480912db9a94b35f51bea3f2007162c83ef43afc5fba0d0c6f9509ecb23d76cb228237dbc82abcf67ee83f11435bfbcae2419bb125a4eabbf9dce2b7af97b7101fe36a5d70503325c3d2921bb911a480877286c9a800c031733b461d75368f833fb6b9241602df969bf930344ba54623745dd451b54efb35f7a18dd19b7b6a282da76988148f735d2a77441541732def1c30d0ce2ed4d4c3479c4963997ff3bc5dad69a1b7274e113700ea354b01ab6751ddced371985cff394c6f1949221dd436d8b34ac2a465b165d0c1310283b39fff1b7e1acc1ce6269b350f961a3275b742dbcd62538f50f3403c5f34f16ee36fa051c4a75aeba2e7dd7dbf0f65074c246cb071d1859fb0d1b8c1f25bea36b3de32ac471c77457a52c105ef88a603e43264cf1c4739fb3a133e7259f9732cafda26a4eea6f5f916770f5b10fe1b59ceffe0d5e775ddfa8352b0fbfab2378bda73f70d547b9dcd0e8009932391140ff28b26d4e676d06c349c93b9fda424cf7924c3603479a1d659833bb54817db3cf6ade12c95bf3d3377367fa9b336dc5a327e539566fca1ebefe7f1dd362e13df7b3dbf618f602203c8176b45a84819d0ba8537b0ae5222d85e1ee76d2048668413f99dc9ddcb829690d0f1b146cc2be8db20293173f5e481a9434233d72d2b4b19bba25321013c58158abc11ea9d79a0157fa5556b2614031b6dc20ed3eb335408d9991952c3805aab3dfac7d61abf322a971b62738ae5967fc79446c2bec7fa3f0f1e150517efdc857fd2e6470daa9284a6a0bc5a705d16277f3bb74cb70b185c59d8cfd43d95a51d310f910bccf60c0048b6d398da33e56011c897a34d05a744157e8b11a501ec010cc9396da6521f6434e3ca9797dbe9e21eb493c05a8cd833741ce5726efb5eee294fbc4b6851e22b7cdc62b177458af9cef6e57a7e808a54c16e11aabc23b997476700e386a6cdbc8dbf310d1fc9cf48fcb24e9d9dd679927056e4d64e24eaa5121d5d242aea07d29ea9c571e813c4aa257837014ad09e0c1e343f6d6b1dcff114df64e45cf6d05bc54c6f9a4d430101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff025a00ffffffff0220a10700000000002321027a46eb513588b01b37ea24303f4b628afd12cc20df789fede0921e43cad3e875ac48e801000000000017a9147d46a730d31f97b1930d3368a967c309bd4d136a8700000000").expect("Block bytes are in valid hex representation");
// Testnet block 0-10
pub static ref BLOCK_TESTNET_GENESIS_BYTES: Vec<u8> = <Vec<u8>>::from_hex("040000000000000000000000000000000000000000000000000000000000000000000000db4d7a85b768123f1dff1d4c4cece70083b2d27e117b4ac2e31d087988a5eac40000000000000000000000000000000000000000000000000000000000000000a11e1358ffff07200600000000000000000000000000000000000000000000000000000000000000fd400500a6a51259c3f6732481e2d035197218b7a69504461d04335503cd69759b2d02bd2b53a9653f42cb33c608511c953673fa9da76170958115fe92157ad3bb5720d927f18e09459bf5c6072973e143e20f9bdf0584058c96b7c2234c7565f100d5eea083ba5d3dbaff9f0681799a113e7beff4a611d2b49590563109962baa149b628aae869af791f2f70bb041bd7ebfa658570917f6654a142b05e7ec0289a4f46470be7be5f693b90173eaaa6e84907170f32602204f1f4e1c04b1830116ffd0c54f0b1caa9a5698357bd8aa1f5ac8fc93b405265d824ba0e49f69dab5446653927298e6b7bdc61ee86ff31c07bde86331b4e500d42e4e50417e285502684b7966184505b885b42819a88469d1e9cf55072d7f3510f85580db689302eab377e4e11b14a91fdd0df7627efc048934f0aff8e7eb77eb17b3a95de13678004f2512293891d8baf8dde0ef69be520a58bbd6038ce899c9594cf3e30b8c3d9c7ecc832d4c19a6212747b50724e6f70f6451f78fd27b58ce43ca33b1641304a916186cfbe7dbca224f55d08530ba851e4df22baf7ab7078e9cbea46c0798b35a750f54103b0cdd08c81a6505c4932f6bfbd492a9fced31d54e98b6370d4c96600552fcf5b37780ed18c8787d03200963600db297a8f05dfa551321d17b9917edadcda51e274830749d133ad226f8bb6b94f13b4f77e67b35b71f52112ce9ba5da706ad9573584a2570a4ff25d29ab9761a06bdcf2c33638bf9baf2054825037881c14adf3816ba0cbd0fca689aad3ce16f2fe362c98f48134a9221765d939f0b49677d1c2447e56b46859f1810e2cf23e82a53e0d44f34dae932581b3b7f49eaec59af872cf9de757a964f7b33d143a36c270189508fcafe19398e4d2966948164d40556b05b7ff532f66f5d1edc41334ef742f78221dfe0c7ae2275bb3f24c89ae35f00afeea4e6ed187b866b209dc6e83b660593fce7c40e143beb07ac86c56f39e895385924667efe3a3f031938753c7764a2dbeb0a643fd359c46e614873fd0424e435fa7fac083b9a41a9d6bf7e284eee537ea7c50dd239f359941a43dc982745184bf3ee31a8dc850316aa9c6b66d6985acee814373be3458550659e1a06287c3b3b76a185c5cb93e38c1eebcf34ff072894b6430aed8d34122dafd925c46a515cca79b0269c92b301890ca6b0dc8b679cdac0f23318c105de73d7a46d16d2dad988d49c22e9963c117960bdc70ef0db6b091cf09445a516176b7f6d58ec29539166cc8a38bbff387acefffab2ea5faad0e8bb70625716ef0edf61940733c25993ea3de9f0be23d36e7cb8da10505f9dc426cd0e6e5b173ab4fff8c37e1f1fb56d1ea372013d075e0934c6919393cfc21395eea20718fad03542a4162a9ded66c814ad8320b2d7c2da3ecaf206da34c502db2096d1c46699a91dd1c432f019ad434e2c1ce507f91104f66f491fed37b225b8e0b2888c37276cfa0468fc13b8d593fd9a2675f0f5b20b8a15f8fa7558176a530d6865738ddb25d3426dab905221681cf9da0e0200eea5b2eba3ad3a5237d2a391f9074bf1779a2005cee43eec2b058511532635e0fea61664f531ac2b356f40db5c5d275a4cf5c82d468976455af4e3362cc8f71aa95e71d394aff3ead6f7101279f95bcd8a0fedce1d21cb3c9f6dd3b182fce0db5d6712981b651f29178a24119968b14783cafa713bc5f2a65205a42e4ce9dc7ba462bdb1f3e4553afc15f5f39998fdb53e7e231e3e520a46943734a007c2daa1eda9f495791657eefcac5c32833936e568d06187857ed04d7b97167ae207c5c5ae54e528c36016a984235e9c5b2f0718d7b3aa93c7822ccc772580b6599671b3c02ece8a21399abd33cfd3028790133167d0a97e7de53dc8ff0101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff071f0104455a6361736830623963346565663862376363343137656535303031653335303039383462366665613335363833613763616331343161303433633432303634383335643334ffffffff010000000000000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000").expect("Block bytes are in valid hex representation");
pub static ref BLOCK_TESTNET_1_BYTES: Vec<u8> = <Vec<u8>>::from_hex("04000000382c4a332661c7ed0671f32a34d724619f086c61873bce7c99859dd9920aa605755f7c7d27a811596e9fae6dd30ca45be86e901d499909de35b6ff1f699f7ef30000000000000000000000000000000000000000000000000000000000000000e9851358ffff0720000056c2264c31261d597c6fcea7c5e00160cf6be1cd89ca96a0389473e50000fd40050053f4438864bc5d6dfc009d4bba545ac5e5feaaf46f9455b975b02115f842a966e26517ce678f1c074d09cc8d0049a190859eb505af5f3e760312fbbe54da115db2bc03c96408f39b679891790b539d2d9d17a801dc6af9af14ca3f6ba060edce2a1dd45aa45f11fe37dbaf1eb2647ae7c393f6680c3d5d7e53687e34530f48edf58924a04d3e0231c150b1c8218998f674bc171edd222bcb4ac4ba4ea52d7baa86399f371d5284043e1e166f9069dd0f2904ff94c7922a70fa7c660e0553cc40a20d9ee08eb3f47278485801ddae9c270411360773f0b74e03db2d92c50952c9bd4924bbca2a260e1235e99df51fe71e75744232f2d641ef94f394110a5ad05f51a057e4cb515b92c16cb1404a8cdcc43d4a4bb2caa54ca35dccf41aa7d832da65123b7029223c46ed2a13387d598d445435d3cb32fdad9e27672903864c90d86353b162033078327b5b7aaffc89b40096ae004f2d5c6bd2c99188574348518db66e9b6020f93f12ee1c06f7b00fe346fefceaffb1da9e3cdf08285057f549733eb10825737fcd1431bfdfb155f323f24e95a869212baacf445b30f2670206645779110e6547d5da90a5f2fe5151da911d5ecd5a833023661d1356b6c395d85968947678d53efd4db7b06f23b21125e74492644277ea0c1131b80d6a4e3e8093b82332556fbb3255a55ac3f0b7e4844c0e12bf577c37fd02323ae5ef4781772ed501d63b568032a3d31576c5104a48c01ac54f715286932351a8adc8cf2467a84a0572e99f366ee00f82c3735545fd4bb941d591ce70070425a81304272db89887949bc7dd8236bb7e82190f9815da938cd6e8fec7660e91354326a7a9bfe38120e97997fca3c289d54513ed00286c2b825fbe84f91a39528f335674b5e957425a6edfdd00f2feb2c2df575616197998c1e964e069875d4d934f419a9b02b100848d023b76d47bd4e284c3895ef9227a40d8ea8826e86c7155d6aa95b8f9175812523a32cd611efc700688e03f7c245c5bff01718281b5d75cefe8318b2c08962236b14a0bf79534c203df735fd9cced97cbae07c2b4ee9cda8c9993f3f6277ff3fec261fb94d3961c4befe4b0893dcf67b312c7d8d6ff7adc8539cb2b1d3534fccf109efddd07a9f1e77b94ab1e505b164221dca1c34621b1e9d234c31a032a401267d95f65b800d579a2482638dfeade804149c81e95d7ef5510ac0b6212231506b1c635a2e1d2f0c9712989f9f246762fadb4c55c20f707dcc0e510a33e9465fc5d5bdbfa524dab0d7a1c6a1baaa36869cf542aa2257c5c44ef07547a570343442c6091e13bc04d559dc0e6db5b001861914bf956816edce2a86b274bd97f27e2dbb08608c16a3e5d8595952faa91fb162d7fa6a7a47e849a1ad8fab3ba620ee3295a04fe13e5fb655ac92ae60d01020b8999526af8d56b28733e69c9ffb285de27c61edc0bf62261ac0787eff347d0fcd62257301ede9603106ea41650a3e3119bd5c4e86a7f6a3f00934f3a545f7f21d41699f3e35d38cf925a8bdaf2bf7eedea11c31c3d8bf6c527c77c6378281cdf02211a58fa5e46d28d7e7c5fb79d69b31703fd752395da115845952cf99aaeb2155c2ab951a69f67d938f223185567e52cfa3e57b62c790bf78674c4b02c12b7d3225fe8f705b408ba11c24245b3924482e2f3480994461b550641a88cd941d371139f3498afacdcba1249631402b20695760eaada5376e68df0e45139c410700effc9420dc3726515e7fcb3f349320f30511451964bd9b6530682efec65910ceb548aa2ab05ac3309e803161697213631ae8e13cc7d223ac28446c1bf94a19a8782ac16ff57df7ee4f10fb6e488c02c68d6b6dee6987f6d2c39227da366c59f54ff67e312ca530e7c467c3dc80101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff03510101ffffffff0250c30000000000002321025229e1240a21004cf8338db05679fa34753706e84f6aebba086ba04317fd8f99acd43000000000000017a914ef775f1f997f122a062fff1a2d7443abd1f9c6428700000000").expect("Block bytes are in valid hex representation");
pub static ref BLOCK_TESTNET_2_BYTES: Vec<u8> = <Vec<u8>>::from_hex("04000000238d665a062b9007836a7d8f968ba2f3847af5f542733389a952cf9b86795502d5b3ccfd5e7828c4b2d221bae3178c500e21d33399c39a2508a0a82d53c022580000000000000000000000000000000000000000000000000000000000000000898c1358ffff072000005b7d311fedc046109a4482bd0eccdf21a6089c99fce43633d03352530000fd400500282db5ba22a2c122aba42724a991196cd01cc2b7013318f691d61171db79202d2e5979b0b6d5692cd129eb37b7541ff51b7b2a840b45273f86d2509acfaa39183bb3850f9916ec8246ad9ee785462c9cda0ea202f12c7ccba8cc155096016a87a6fc40a6a44f5f3b309a868f30d9080b128c75234a6c3d019fb7fbe29708d01daaab84e4891a00d15ffdd9a598dd678899102265e2090a4b7b26ec55764febbfd1f5fe791aef8500619578359cb2abfb19844981b5c0e67e86b6549765bd638f3a701b0fc8a56d00c4efb87b55883f1d81012e5b02d44e10ec9bf620f20ad62ca549be934d11103f9142b3201ff31b7791c1636aaeadc512b2c0f801a64959300d5d526c2fc58e2838162659fe59168f2214b41d1ec963d543e2660ea630d031e2671c8c841fa9c1b58f7475bfe958724cf89c038d29306dc0043b93148ab95f6e99017ec5863db2f9130c48187bfd013924b34eaefd1db6b2818f4f6a604185fa774c2c069455c6eb195a5382403404c47db312b29b5d84e44c4a645f06ef7899f0b78962e95d5476bc989dcb9458c24733a435b151c9fb46c32cbebd3318cf3ed7310533cfa0b087d58c687505070858765968d1f7077f0e6dd75ebf15d74bb8c7466ef2f4974df537f5dd64097f4adf8b1cff61c00181ad26f94cca9c01960db31edc454c1650da4f4390b4aa0efd46c9ed527ed8bb068494285da2680993e8d355caf6a0bd42a4d681780db2312eef129aa76c6081ceff231311ea93fd65fb0b80df077c49ca69d8996b1ebcfd74bad793d7914b4748af45f31ad018dd12997bfcf809df3894bbd7a10cc585797915356389b744f71ee58ac25484b635fe12a1b20909c97edb1d7ae20b1ef1c776260ebab06e16a34c2789fb5555ddc954cc38f07ac551ac3b46c1370f4fa1ba22ac35d82134eaa0d3f3198eeef723030072214ede447893a03f706d389ea60ef8a81ff7e20ae920cb1a5219e93e1bd2058df6296dc8ba39e4d403199d2c209c3d6b3b2d462aecc04b0e248e7f1e9d204a1f6b7df51073ae2faab55be3353713743c5db40555bebda203a5c79fc3324cb8fb7629c9391931a1268c97fad6d6ab7ebc583330356372df8c5e9e885422c75ab956932351858452c5904a5aad3d9fd840e356abd580479d9a531cda6de08277008bb3a1bdf08604c1df0d8e8cd475cb455161bfe5d9710bc0dfac4214afeeed4bca6148b54241b8f4ab221502917f261705715c7388d9e91d3685a1f67c484a24b716912fe33a89ca7ebc3a5b77e6b36657c7e2b2e1e8b2b699690ca749339b7b2673fb1083496bbc753fdfc49ff6e921c5e35f27d9175afa7da3793d6a7ad5eb0ab8c9ee0e60a8ae438e3145cf64b5f6417625ca934b9d7acc150efa9b53618c15b4d8318be5de0855696d92ef2e018d97ebd24102e824bbd040aed958a51016a91661180e64932f2316b5ee55923263d19d293996118f511f22912e8c9c435af630099fc47b7c4ab581b7d760418314c0e6e814b3bbddb486517436d56ddc774701072cd77beada2cc94cad87f3d1cb83db4da05c2e141bc175bc8848e548c27584995333ef1d9eadd8d7f028cae60d5b0e9642db7245d388ff58c6a31556319a29c0dc14362b957b6220a428966d66d6c3339a12a503806de7dc4c4561bab6968245e41b27ae89fffbfd1bd2f4104d074f0f2b759576f9e16c0e2f73bedc7c0e0da97698e07ca1d729b113938a6b29c3b19d9b8225303f80d6dc0e39bec343ac9a2d23926ab414666e079e68745998ff73dacbe1645bd004dd06236f615f11d47e9b2d54cf8573d9a295bda88af4b2c6c603db0c0757485a543725b1cc04f7e9f38445ed875ec54317418600b4113600e137417e5d1fc333159a7e365d0101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff03520103ffffffff02a086010000000000232102acce9f6c16986c525fd34759d851ef5b4b85b5019a57bd59747be0ef1ba62523aca86100000000000017a914ef775f1f997f122a062fff1a2d7443abd1f9c6428700000000").expect("Block bytes are in valid hex representation");
pub static ref BLOCK_TESTNET_3_BYTES: Vec<u8> = <Vec<u8>>::from_hex("04000000181ac2d6dc0ae73a82d7db472ac2879a7c24d8b12e5f73efc33a55549ea4f10050953b3d2510d8708ca94daf3daf9a220997fa8a0c892334f9aea314f8f33b4a000000000000000000000000000000000000000000000000000000000000000034901358ffff0720000086f667ba6cc97829497a0e1b8f20ab15b3e930aabc445e613bac0eb30000fd4005001be24c401d01d9b72310669956a0b87f75fee8f6127c2117d005045283f955dcd03cd783d990ff199c08142849aae7ca97965243ef2238cd3d5179edb4a809e610fe8ee0697f8472c5480bc9065e635f3d5e7f0cd6b1a7018830c7c07ba69d48495a977a611dc5ad12044db353c95729ad01424788f804f92b48db257112e0e5468692bedadd9b03bfc8387044f612bde6244d2a15fa0d186363a04355c10576bb3f26825b66d50078cbfccbd303e9c6a4e978af7af4f7913fbe76420e9554efa0d06d673455728e4cf97d7dd7dc9d3b5602543374d16222452e8a54dbe6c75a531dc5dde6a64e982f0a299a8c773a36865ce2fcefbb57bedca75d069da903795d0d3188468275ebdb3b1e8085b6068a11ae35b8620db5ac967832f6029dcb136cac7d27d010af925cdd2e3d457ec68323da25f7564a851433a9136b9d64e2299499f177718a80181ecf64bd5e4f6f005dd63747149ae0af7ca048812ce495c3a2b4629b04666ff27847d1544e9682221fa0dbed35840e3a45099d7c36058829eb6fc5b1d999a6619d76834e50af1c450b69a7aaf041bf9f23853655ac0e584e5d88970f84e1b917ceae9b8352b587fd6428e5828ade986d2263b2c0b2a87e73e18e82e671a5a5aa025cd4ee611ba123ade8695ad1a6f6e558c4b8ecca4a64f593242b39ac094caa778f58a463ba15c9aa69247d2a56a502013b72f657aa094e8ab3378ca53fa141100ede78124011a3deb1e0bfd65a22fd666a50b50dfbbc44c221d603a4ef2ce0f3cc636634adf7fae21a95b8b3f03ad0bdf86450caf3d9f9290eabf39f5eb9bd3c4de306c8405f9ac2688556d4409e7945362cd0a6d4716109ef3dd735a47d7fde7a328892c358071d54b9dfcc0c9fd7bc76844195d75b732bec4a1ce97471f2c4061fcecde4998ea838f0331239bb5a996ace40fe1b1201b0bc4eb3a3f2cb2ee5a40f64ac821346859c857238cffed09823381d3d5809eb915c90a67c853976ce092969d11b5e2a97ddbf10b03893f231bd025b144426f85ebe0d5acc599f88a3752637b30dc0df325eaa05365fd87532f8f9a746bc0bb16126e359223c265e2328d5ec2c09c919b23a582108c46753b9709e6e340835f41eeb86122ebf1234827f59cb2d69037089c7108bb769001565936a199591f54053aa5fae3f1ad701b989f576d1f4437b91011af2f35aba8bac3f3bfc15e717ae400744aa7553220939f250e5a0cdf7b09316cf6c6b0d06832977c6f378cdbf161f69683c735d35e8621614919bb69048a3775821b2ca9d7f1b4e3403f6ef6c79093ff89dcdc39415736f29638a12091005e55672eac17e33f485b46138fc52bb1f8cfd0e47067f61d32187fe6c50f4642cd8d88d7dff13735ed45de02d819e9ad03fe58ec844fbef3302ba4eb8821d020df8b7b71d1cc1b45ac3fe995db0a952cdd9e39c319d1691c1d310277bbcf5c0fc68f64992e7dc99b0195339b2eda0d96d70feb82a8572e26674bd1e05ff48ea7eae9bd27a6b5867b95dc152314f376c9d5ac5070abeffa61e56a1018c50f9dd088b2a8f0e76a76d550c8b4a01d6df03e5146695adce140e141ed8f3eb13b26296ab573414ba7416ccc8fd5e165ff656a40345d2e6d231b96b6dfc54285cb8ee552e2ade7756b309886e4a941b738d2c8920e4f04062b94756d369e80a4bf062900858430e8d20cef434561f51dd1d75450ff5d0b2c6d681f8f2ac5269b078080e90a57549a05f0bac317eb13f038cf4280a634198c25bfef47fe70dbf20f071db395f1145047693a919a92db5f8d7270efa7e0bbb1ccc8191dde4d7abdaf631f018b8842f29b4156f0d5123a705374371ab7eda9110d8abe7945e74ce02dcde3383a252e8c14ce8ec2682c7567c840101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff03530105ffffffff02f049020000000000232102b24776315475d2db96268d6f60cf66db445a3c50f6a3a7a2cb07be45e87b8346ac7c9200000000000017a914ef775f1f997f122a062fff1a2d7443abd1f9c6428700000000").expect("Block bytes are in valid hex representation");
pub static ref BLOCK_TESTNET_4_BYTES: Vec<u8> = <Vec<u8>>::from_hex("04000000453d3894900251af96173487ba0c01acdc2c8093ad06a4035b0320dae841e1000bf847a21ad1ce24a12ea04cb38029e592dbdfb58d78d810f33011eb6ded7333000000000000000000000000000000000000000000000000000000000000000080901358ffff0720010051fee29af2af0763d676ccde3905e3bdd94eceb50ec735e4ae507e620000fd400501e4876165d8a5feda2bf303ecdcaec1a588b792581b29173a2516a0dd3a5521e6b4d20cda02cb1d16ca1348d3b733e5956dda564bed73f6565f84827cfd352713a2433dd5e3ebd306dac7cbdef0676c211eb4340b5297fe3a078aef438d949d27e3535647f11e2e6f4d047f0250152d53affbe78f414248d2552dbf5ad30d7e2cb96648e64bac1ea3a16d37644add3658afd112de84c44806dbafdd6592fd26a50f8e0994d1bea302392273102614a9b70b9196eee8d095e8523435cd1d0fa787068ea9f8ef2f93a72ce3e3df24ecbf8d5a1769f26b4f966c03487d618e67b129a98de25947cc1e04c612f7d55d893837b48f8f4ee4fae87b9e76b002ce471a29c7414597edc11e366a6f8550f09a21c41c3ac6b02b1eb27978a5c2b48470673dce121d635f1700b2afabeb5439f2941327e52af84a940579c2821e2a743aa9c8aa6d0f7f12699ad50cdd57a18e69b5056db6ff5b4febc8b69ef44bedad99220992f2590b5584adbd4956fc1fe7edb68a977031c5d36d4ff59814276389a9af90018b4add95747a0f8767779cdeac1d585c83849c4a571b66e2f9c0ca68c5884edaba6b0ad30919d0262e4f57bed38634561c2d1409d1c7072ccda4b0a7ec3dbfb83814da9f2a1d91848d2fb1ba4721fc9a26daeb72f6ea06819aea8526160bbfa5d077c6174d7b76967dd99a3b74f4f0732f10837fd91a08936ec2ea9263dff29bd69f63ba361228d3198dee2ffcb526a90d026ae830c5ff05f7073e0440daeb7c359f96cd4d51ee530ed90417e0f4b75663c234431c68fd1fc43a728f9fa6745a67a97e5c3f7f39ddcbf80c97d4b395e01a77cfa573b807d28ec95791111b5944c25d8c35da01a2ddaab47b5cda6e95d6887b385e10959964291f3a35463387d2234624c681007d761019259de4e56120ad7ce264aec2a8897305d87906e902a0659f29dcf31beafbb0dded9ce504bf95d8f48b161f1d3d5107678a628be192922978d4ece0353e672ec34efb6cf2b361e8c59c8999fbe6772591dc8079401aed5bae348663c8d6e63dd1ee1be2c924f9a6220a435401f5eb5b4fc45e015421b14a2eb47977838424475b20f88bf2d51661d783f767ac3628785524ee0c047879019ddb01bee450e2d190dc5077f52a23a73819270443344809baefc78bf5fc3495ed7d6fabce0cdfad678ddde9d0fea0aaa430748712d51d5902042e7e4e2f044d6e15b0eda3789e792c5900ddd5f0a70e2ad48f5322157d3b16c38ff0ea1c0d0f41b9fd76122b66db925fd0e7b9e8828344f66f4a23f31edb3d1225fd4e0a0a4145a74d7240ca923b0bbbe95ed633145bec3aee4571055263920621e2f9c0acd6fe906e162967b7c85d9601ea1432d124ad53a9e8e5141e481add1dd63b2fc0b787afd59924f0504b4af7fbe99e03922f85ca2bb42d7d1373c385d676b6c7a73f52421658fad5c159a774ce55954ddbe3cbf76855dc864d0d6979128654edf99716833605e729c2a83b5b81b91a3d6f95d456571f47b3e250bff456e4cccbb5a8b704621be030c9ef5ace0d9367a852d9825894f8638607f96b154b65ab09f053240123e16aa1446a7fac030535c911d6a08ef5679d72a2a46cbff8f3da3b012a5c728599409e30acf902066263b4d115b6bb3c38f303f4b9eb97c30ecf307ae13fa21cba0459898d9eb1146b432a9b46655e437a53d77fa8f2a35dc8fd6c8b0689309602937818b53ef14cb57def2c6268a8156607aac28eb1934b9d119f23d77849a1623a92f675e617778a39755aac5d2cb324e1cd618812601b75ff972d24ad3123ce67f3c4cbd44bcfbde909ccd83cb8aa271c05b2d60ed58d9304844ff6bfe472682cdec63a7aa577e24be4c5bff405682c86db407e92d63553e30101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff03540109ffffffff02400d03000000000023210387c8c8f56c95c1a8d40efb54db56158fcdeb5a26a8f57d8be47b7b826223bf76ac50c300000000000017a914ef775f1f997f122a062fff1a2d7443abd1f9c6428700000000").expect("Block bytes are in valid hex representation");
pub static ref BLOCK_TESTNET_5_BYTES: Vec<u8> = <Vec<u8>>::from_hex("0400000075ef21ee166efb6223f039afb800896ac0a949e02b77a38a79479036ae746b03ee7bcc689bc163057062897c62e689c396a9fe9288d7b9399e0a58c2f780644700000000000000000000000000000000000000000000000000000000000000008f911358ffff072000007e734241db55374b13093622fbfea74696b2ce28e5abb2c8e989b8450000fd4005004b0b0380a079754eb8a20959e9f83d631d18496d0a4a26600d4e36447a92a1f7efe3ce1284537c3ecd16ad112d78a3428f38bf373f1e6959125679db218729e67ab858627aa1ebec06c3c94c8c96a0f27bf29e11879579a713ecdf1e7ab199d0c77182585a95dc224fe5dbdf4a7215d99ccc45c2804f1cf648a51e241a2f11535e4dccc944aa67a81e5eec079778a19c3e313053442a77543142b5a9d501c44d33f1867e19a88b03bd00c7ae9a269bfbd8c2e27662296740591d126f19f755746bd45561e89714f3d92af31d5a36922e830c3d3d0727465ae971134199b6dcbe7129a9b908d831baae4497a6c5c5e7c1d380fb1ea541cf509e3b3e112683f07c4c7e509292965849d3af759ea651c2fb4b9d5b7c4f2fffdb9483f55a89c82ed368fb3ebb7b13d58ee531e671d7e6faf8486275d87ea386bd40e22942a742bab2fa61a9a4260499f96136b6c07dfa95039fe4961e160f5eb2bfc0f4dd3ac7f8e0b64e5e4c48bba44f4deb612d81acf71b5c5545fa3358f3967d07df7e7ba08d5738769be08c4ea1789372249d51850bf30112c0d2bbc5999e180a05d59262eb4f5a5bbf085d0d870770db99b997f2c3bd50bf9d9bfb1fc0b31f6d2287f08a6416ee8a72801edaa6a334055a43b516fe7fe6010efc62b60992762c7ebb4940ab8a32b831943a9b9861330b71026980a4e7981efe4db87bac03f17459f15545a5698cf05e106be3e932df76e009232d6d89bfcb9b155912a3d01fd45fc26896fa26410dd14c5a223367b9c3b7c5c27efbc6dec6fc5eb9a927e781e0cf954b332406d2b11f2515862008bdc97c05a40f31732912d9faec90ea2257b0f990accf92dd18ccd5905e8b4af49308f1d3f8ca1626e6e7f8ebc90988c789be90d5138b52e38161f9f7ad01529e22c12d3dce6693974b55664e17ec0b7e61a215777de23700f9e105d35fe579864d61dcede0c45591fc5ca2c13841da4cc49575533e63842e77d0213dfc0b52f3f5246839f306ce0169afd6c27affdc96ea1dd13470e34267343c3b7131b1b632a56922fad72dba4bfd3c3202be0a821057a674f750f292cff8aaded117fdda4107a748ec1c04cdbb4b3da20f89fcc7ad7ade12be802d72acdbdacde6b29eb623ccdf3c4e6147933a4c50318e7b3650cdc2beacf9b490cbbfa3724d9d928697048673900405a2314046b19345a3ce1d589c7f5c5b1ed80a7ff1a42487cd3366cb68c7812266e39fc0f705d0314b8d5ca67182e1236b034a53f1dcb1fae1342f17d748b528d2a5a8f10692fd6fb1c628e8b656b5051f6b2706961e9155e001f91d2150bcee4652e19f17a7b23e354b1e9d15e962daecb65ff265ccd3c7231bb4c58a86ebcd0b8aa8065e42fcbbaa138b74f4c63d36b670f2efca1bf06b783c99e3f6e37ed0fed9e7017d4f6b6c481f4a92a277060c69ee41ff4ed1219813683e45ab491a57b09b96c584e3725dd044fa60660dae8ac00729b973c75ed23bee451d72aa97769322173811cb61cc8f63ac38a54eb25492a5c20b5b326d024c5c7c88a92bd9cc64402a4e916a2d5c652be6931503b575438a06dbcfcfa238409bac21349152279c26f2bc3be523f1a979ffc2ec0ca7a640db7d2c2ae431f07db5e11c80b5840517a091745c32465c9be8b50362f143911f421d624b23d46e421dd5a5b058e89806c3627151c8219f682247941f3dbe1617093596ea20acf77565345f5fe502f37ddac962c710583fd85e5251bf858af3f6a1f37dc57bd2ee06be2691f32ecb0401d7e4f7e0bacb26f7146c1ad6730b1bc27f2ca04c95c46c3579f289de2d07fcdccf9e0350b71dabd6048db1c9d1adfd037483c074fcf05efd8dc27965550e9b6bf478d4889bded6417eb1496437917d5dad240101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff03550103ffffffff0290d0030000000000232102171c07a26a7b7f5e8fed66755b01b0ad0d36121ef1979679ca4bddc29da664b9ac24f400000000000017a914ef775f1f997f122a062fff1a2d7443abd1f9c6428700000000").expect("Block bytes are in valid hex representation");
pub static ref BLOCK_TESTNET_6_BYTES: Vec<u8> = <Vec<u8>>::from_hex("040000001e2fae054aea69254a5c830f1fba7a4149b5238b31bb0841e4e81883006e6600ab572c332b8774335745715c260810ed0713cfecaceadf09eb5f828d40f8da23000000000000000000000000000000000000000000000000000000000000000029931358ffff0720010046f28cf56b736b908558004e821fe51569a2b61059b9b983e130778e0000fd4005002b168f966710339db5e4d51c708b4d47fdddc8022f5fb581f9d923772ac3f47b7de424a1c647bd8cf10e2be7c97090455a9700b543cbcd0ac31153ddc151359e75bed32269438e12f67a6beec586b99e7ab40a0203d641375486f1f38f81d1796429a1b294d53f270b8dd8ed9f8d67e77e1c449ae0f2a8be011f3a43110aa701111050fe738c37b84bb8450d9618a0d726863e69ff2ba4d0e063eee65475842666d26b6cf43e8003d2f71a0b679e7dc3d143da6ac9ac7bc554deb33f31147519321372abc75279b9ebd2009ec7a9df564709fbd7521f03ee422a9f27e7b7d572aa0498b7e83b150a5cc2370597df45a2e2086fb329809f54a8f50d110bbe0636058aa28eb2989162ccf46388269edee86362b31c1ae27deb7783e89c36dcac626d4cbbe8e9170817cc1acc08ad00ad04b04552611eb256f6580e5e94b606ffe6e38f58b10762c56ca192bc043f7ef10071dd48fbc0c6f7944cd03df3eda964152d0e18772547ae16370cfadda050a4f7617d03562f7e1ea5f6023660309782eeefae566341c6fb0fecfbd8b5ff20400db6b5d319d061fbea6529b24203621ca814b59401aac65564082b74d997c425d0a23c728221dfc73401d5562e0b0e37297493d3132af2db1903e2ac89b509e7ecdcf22230d72f5653001e450955a10d6e4bbe0b88db4d11a00f111ec432eb64b01786115ab806ed05111ea44d323f33bcf9614aaf44e440806fc5f9be635d7f566d9d33bb3ac338a892dbc9e27c88b7e3e420c93a95464981b84dd08423c8b7a5a1eb3b9d614623a7dfd3f58991ee9d87292a9e63b2b78e87fee59b06c53c4d5caa92bfda8fb90810e899c26f0eddcecb071dcc1b66682fd1df9b5678106fad4a3bc852a9bc13170ffed758522ad2628572aacfd5ed978c8fa7481ee80e955196b561a5eb969fabcaf94383321cd54a00cf976ca9ad11cd843e117d25a786a0652e75ed8d165b964a59d959bb5aed22353fcf9cc8f35655152508be66fee821860d24e0b4e0024a426206fadc204216a8cebef04bb2d4eab9834586f58f15fbe21854a003b0596a2a59c8cee21311f33b9c7760a750ac0b2a15a222347bb8ae7dd5b3c43f05a95dc6453d7b27ce03c6256c100fb07d178070bce6946ae0ccf00f47ce17d5cfac26b05dc7acd4124c5149c7d9f4363ce39e0378710f171bd79be82ac0fe37f5445a31d25deba304081e506a5f1f35b02640c51289ecea16ab57dd3509ed4cb0e3184279b9b370ce2d98ec7881dbbbeaf4103636103ca3bf55e0b0410c9b3d0a5495594b0fea053639052ec20454e7fe90c0142649e1091e91e36122ab21dfa60fa342fb8114dfc46a4eaa4ae9bca6f82c0d3749de27493d6a5036ea8fd836c6b0157cea2c2e5f9cb5962b391b87f7c5c59f7ba649e265dc0080019676369b245d372cabd81a8a4a054ac9e2ddb1942744eb1f0c17c8e2c556e4400fd5cc4ed253192702058226c70a20b3c7473f365754e0c821d8c0b25b6c502adb162631abfbaba7a672be6a054210e65f2f7102de979406cf8fbad303a80f9a4fcf120a50b7164929a533d217e42c2991ee89a94ce1223e85e2755d99083004a98686bc04dbf330a28d7ce3dbbd417df9532dd364204d555f070e9e0786437d73ee761cdf1c28041c6a156f1984c7760b868e99e63aade32137b9a80d29bd170af31027f15a41e44aa01fc2ba629fbcaf05aba68c0e8367c8cd3d6920bfe020f2f3f5dcd8381f74a7b4756801b5b906a2584dd3f610bf1d9bfcb904afa3ca3cd26f171fa1038c2ccb952674049d04740b9344dedbe5b37d65a05500e54faf5d8c2f30dd4011ae78946c0d501ced1781ad5ffc7e24b3ee87bb4b1d67b930984d55c1476164c19bfe2cb947e217b1960101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff03560102ffffffff02e093040000000000232103aa3e2d213d453dab046457a98d908e81b8e79ee71bb400e3b1868844d85de054acf82401000000000017a914ef775f1f997f122a062fff1a2d7443abd1f9c6428700000000").expect("Block bytes are in valid hex representation");
pub static ref BLOCK_TESTNET_7_BYTES: Vec<u8> = <Vec<u8>>::from_hex("04000000b8863fb0b1361519059c4ad552bf007d321c2a9a710c6f71dda84050eb637e06f21731288dc961bc400ecc1f70099b0bb4b887bb319a51199c81597100bdae4700000000000000000000000000000000000000000000000000000000000000005a951358ffff07200300a345864053594c184c6750b57343974a3eaf2aa3e7c4426f524eb2460000fd4005008eeb245cc7cf1d37fcf0a704f9985aca2e36ef05295984fb42ea40a78ae523869e70cd617937b31ef6028713e9f9ce07bf7bf582cd6b2f5096888019b63f13a224146d4e9805917ee44d64fa0b014805db796903e671e5110132baf4be7506d86315833075bcfaf621c97b778758543f679d632d0e72d6f63a45b6dab775f41d31b525f11d66cc1c9d1efe971f41933a5b327a2137b4fae268fb841028853ddd50aacd9c58325c05bd34653c4337a0bf771484185362e26ec2dbb956069f415ad59c980fe1f1924741cd656e0ae39cc7fc0c9d45586bcef71079be7357b11c60f1c55e2e9b2f24080ccbc4155e4f315333eb62e88a9d166f4c9b201160a09ff71f047b8bd0b2c266be5953a1995f174011a22a384de1d87171f8e3502e44f720dfb29e472d156aa6bbeb29e39b95b344a6a0e84f4af4a03aa8713af7022522a14f5f294883e4b860069e041291cd6800a0db3987d48577b37d9277ee2bbe68ceb2957aa63206f6cd0a9a3791efad876057eaa4a28ec9dd59970d63b21ef644d7aa7361b383044f1992c93dfdf2e2118e08e4bd0b9741f117f6fe69d188fa936915672b0fe546fbd12c20cf7e5d43c0fca470cd5aa77178c81bff7c5b5fcebadfc37954a44d324b06cb34586b841b027cae76c851969f0af2232ce97e19e8f39977831b2af7191c601fb34f52e69cc7df9d9b68621c39ac00c4563e50913398cbb760a170499628f1c9a90ee20cc8fd26b6e1c697a024419e9153d1b08fa4f6a8101f774e5140540777974ff3c3cd3fc82daa6e3a752e4652caf331924ed4e23137c3206c5be20aad9275531013834072167002bd02515c59161f88c4f49df57a1c0376512c54547ab6b655c52ef0f1b99aeebefff81bc487cdba34309daff946fce5e20c1336e01c220e229013bd195436659fdb087b404b57ce29483393f000c266da348a9119924065ed556165f6758b9e6c4a1fffb75b3a4d0d8d2372aa9240739026f4525fe4de161832bd72d1e40f3f1c02a61672a42e3bb192c90747605ea8e2983023b4eb96ff0ae9aa2a22a0d9cbe804eb40fbbb119423ca080540067796aeb75cfd97be1de1126cf16865fbbe35342953d6325a6c703cc6b8267c731d0f342d7bc4a9a36afc2592ae0fa95310af6023779d685d5047b06c79e7e755949af2aad9b9c904b76a95f3054814ad7a415cbfa39bfe85937901df32dca63ad05ba7abc3d2845ce3dab2b35bb53d859e0d8a03823a87f035d57c252237c997cd983e70f58b2fcf9a721b1e8ded257398814fdc9af69757f7027f058801155f8f5ee7652b15787bcb5882dad01a82011dbbe94ab38b0117e3cbb24e69d22bd4eec21918e3095d8fd1b716493b9fa053c7227d0d43c3ff5fed28289c4457561bc521b43f93a7df724b69ea9576f30d026727a276c41b95f4fa1862e4694b7f21c3fcf16f4a5cc496646508a7b35415f68b40251a9fa4355a8318f34bb0904edbd7cf21024c5b5141ddaad3d600962348c311788f71c3ab8512999874bf651734f6e57d05bdfcbafc4da352ffd004c27565010b7ad3deb6914a9a9260e19623430ae538fa39f936f25d369b6094079f8ea7c510132563f5b31a88467436e78cf9fcf0207e5d29bfe92f1b8d6642a63c4e03b5cc1514ab990423222216d3d9fda362a2c9f1d631158e085c25e20d6c9d31886271012eb46587f0e23a2da22aef1e2c11d3ed6710cf876e8df3c71002509345d329b9e3a618b44c7665528db4d2b0595f2e7989cf6720dc17f6042f8187d1e54fdbb653f5f02dba00feebf73cd7370b494790b1d2fd5f9e905319a0b1258248fe7b04080de14668aadb52911125882befd99346851dd5dc1f27c212ae3797a3057197a2c329c691293e74180c1e0101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff03570101ffffffff023057050000000000232103b5ca53d1dbbc1f9896f3a5fd59715d066f98cecc1f15dfc33d0762f8409e29ddaccc5501000000000017a914ef775f1f997f122a062fff1a2d7443abd1f9c6428700000000").expect("Block bytes are in valid hex representation");
pub static ref BLOCK_TESTNET_8_BYTES: Vec<u8> = <Vec<u8>>::from_hex("040000009602d22138bce598c396bc4691d4cef0b67fd3a7f84a9a35a60d921881052f0343a443c43f281258a8aba067ddb775c1423ffdecf0007273d8c908e22b98f8290000000000000000000000000000000000000000000000000000000000000000cd951358ffff072001000d3233ddab5818d448041684dfe38f0448cf2e12ea44818478f35ad70000fd40050068d4c9b1c19f884b49d8bcc74b398a97a1ba17d028602fab3820f2ad2f194345c73555f1079fb5a93c33f15ebe85f99efbebd349cb78e27e369ccd9642e5581a7f9c9c180b92c56f86890d71a7bb7f2fbd84470650fe26fdc7fb55c5f7c221137252711e4cb483710e12590419661ed14a0624aad7e094d9e29a19eba116c0cd3eeb2245839d29668aad5b16a31aaf5b16c829c1d4d26e99a7c55a1543c060e783e57cfb2fc6ec00793892031eed07a0f0e170e9f47bfdf7e897dea319ecb7f5b53976c9e72c8911bd50677b16635fc5b80e4c0ee0334ef5a771ffc639fff15a05b4c9b39f201743ec30206e119f8aa33489b5b084ea75d7d41ac500d17ed2ebb78389fe67f1c4617c6e632ce6dcbb471b1ea11fbc19e969dcdf424286ff213974253b03e3061ba25a92f40b81d68d956fd5bef0e6693ebabfae156f1a224a8ff9ef4542a460ce78e5522e4c9bbe3707cfb6920aeebdf1edd85205b617a96564ab6c723639f3a49b5727d8cd447e640ff73deee9357e92b39709509b9ee5026126fbad62587a25b1349a4c4c54dd108aabb1ae9c444592087176e830e3acc4a113d4f90c5cc9c995138f2aef85f63566ee8de29d249aae0f1920ce13b3212e0b4d1288093dd12d9eec457921eb1262ef1f39e3e50931ca65d9ab78d439eff1b071975691dce80e60933f9f7335deb24700a61f7f5ed69a11e73e9c6914627b80d2e46dd376d3e5ee3db07ceb178a3e052020097d73bba236a7df20c4b41c14c8b914f80662cc4b5e1fa237372ad7c57cc332933dadb831e354619e536c3b896ec36a42497ec4ffec111f52130bb497f2c5710356d795a2eb7c6ac1c20e9bcfc4318e63e71a5b3e3bc3eb16bcfb3c4e71b677cfa3e81560ad909ce362c9835371ac6226b344b22c94936317970aa653cd54e1d20124a868e4d215593d32e55e0101cac9690ed901e9af411e6dd9108050a6e3e07d17918526a86a6f2be652f427367c10b9f8679eba7a18ddb2614ac7479f0ce6c42f3c35852a76c99f8b2f2e069ed13718d3133ed225b0b8b2f68a56225e2f81019034eb9d031ca9a66567dd68729e86b6295cb9350df1087aad8a34dfc8e694a83acb39d97726b378ee0d236f6ee7b19dabbd5887fa9ad439d6a87d1e10714b98a5e459727205fdf6150735ed8035f8d6567c820594328f51754a65d0a7935cabc17871f0ccb3b66c2654cb2ab4e459b9d9f983af5b49486e60b615290e0843f9fe528aee3dfa74959ae3cc1601d94efe1c2d164be7ad17de0e15f12f22a6d8b0ee4d89276c55950e8c83a465050b926a94e5203e7f6109b298717dab18d95e2dda7a19a1d61a433c02efda5db75ed97900101ea48cf890a91cc706927dd6769bce34725b4b6e18837c71c665f41bebce22aa2350d679c1b5b4682001a7ebb73e1f3c8d7281f0cb95e684f061d5c3b52104888bc1a37733d1bc5ba389875a93154937afe8733806b633444f26370b96341ea36205929b52f4efca5615e65cf660ec815b0978dceed6b89bc417de3d6904a91219b0882803431c10665b399e6aa130b8e66c1edaef47b50c5137ea7fd60c576e5d4d86d370185114808256ec1a9fd9d0fd46686bf0046eec525870bc33bed6dc74d115774f0b7496c9455155c2ee1bfa390caa737e5acca8772e3ef25d6e7c7c475c25fcf75e31d65f94671f709d5261b3955b504ede2d6c9fd0fc19e3169a46983296fa0601cab0765b44843f857b4c1c365179e660b0f5107982d0ce23fad13b372c95541389068b709b47cb4c4e884a83696c562ded73b67e271ff5db14a3122d35f4652f05548bc7d179beaf962bf2cb85d15c569755534335ad4ed7a8fc447cc240320a4472e31db763ac1643b1a6f55a2dd2b3b7e91f0101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff03580102ffffffff02801a0600000000002321035e017ce17274f75539e35e93ffaae48b91c2cbdf1a982fe37a7ff0e97cac9b19aca08601000000000017a914ef775f1f997f122a062fff1a2d7443abd1f9c6428700000000").expect("Block bytes are in valid hex representation");
pub static ref BLOCK_TESTNET_9_BYTES: Vec<u8> = <Vec<u8>>::from_hex("040000003dae23446feb7b12c2d68c735985ea2d7667208ff684d86877c989dd32d5a4051c78590780f87bccbc7eb483f92fce9f2236c3c3cb729461a02af7f5dc40ec9e00000000000000000000000000000000000000000000000000000000000000007d971358ffff0720000022fa6efc3e750a2fa56348232d3cd50ed5d1f75ef6c9de076cff4f140000fd4005003cb52025dcd523b0117646aae7559dd7ca35723a2f51fbd4dbb2c9c3c942440f12db079327cd194d880a480311552574bb88a5e24a03bf9d2d4ca65fb08018e792142f67ee85876cc4a647ab3a7dcff28e882f04ac6c8142d22e00ad7e107147450ed025249d1b473dcafbbc809bf88f5ba2c453b2e31c4efb1ebd35ee085295c73612c04b6e33830878ecf01273d053a8970ac581dcd90603d75931d134f8b75935f276930e0413f87d7b02cd628d0d9193f660d53c461885fc690d2c245642eb4e3c1111bfa435e2b7c736c3529ed3d82a9022b0621dfc2bc24eb68ffbc68fee434a7eaa36349ac4b1e50df379ab36b3d260a915f2c7a1bf3dba193cca15ab50d57541a074c491fd14b534afd063d8256e8bb658e5e2854026034b94f0b0cd1975787c002d7acd8ab4d162ddc9a6c5669eecd67167ca5428f13b0867c0991f7b2fe36a14a1044cb21adc911c9dc000882047ea81b8bd946601f5319287063c2637f23c0cc18439ad83a6ac6275a450faf35211ab8f1053ff40b28320ac27f2c196b148fbe2d798ea59ecd8d1a261b56c148021eab1a6bb36b3a6d50ae1db4cf0f5f6026253433a4e3a3bb431d0e78cc831706530fc2f4c69a24e602fdb562736ff7be4f7ebcdbb09d57d5baa037ba9176e1784d4bcd6a284d8e127ba5692bd82601e382a8a6d9ca04322c983200758f693ac515e76f00d2a87fab1917c0d1c9901397630d75583ba529c8a3999fd5fff0ed6573268190dbb782be286b5fd208b19f4237dc7509875509ba5c85ec5a97ef432394f911eb3650550d4bd21ca5de624c5c68a6e2536ffe21b1376ff143e237ff1f131317e9c7261530a39dc5d443f019361159a55e3f08218bd8350eceba5d77ff9141a0804c89a86ff068605ac0d316b42f78c52feee072b4324b959d37f6382c9858b054f8dd3002918faa900584e6faa8aa2e586f8721015a2e52d5b1db2fc2213a193a312b1f985f4e60614ff78f4f9f811f77f8d0a03c6a48d6f74e3d395e5913be4b9e24f6ef3928840e0eb2fbd95a6f0ca9ab74d9f3c835e4f4a9837bf04fe86597be6a74bee251112a6a3f958bd09c9aeb5600acb83da6b93f3fa5f8659a3cf2fb9c9991dda9f0d798e88dd45a6aa9ed86747cdd3604237bad9cdaa2426cf3eec6dce9198ae72bf6f58fcfa2cfb5feadd0b9819443a11c97fee8c93a062f58f758105b5f23c1898e3045e4c62f55e44860d3255d851a3dfff492a15a7860ab46916d37dd3f60b713ef92e489b77da6767717431226304c19860b79c776b797e83c65abe7c1bc1a2ce188da1d6c4ce444a63708862de34d99e5c4cdb3d35c36130b751e935fe9335c555c55693308037c42dea27924cb391bf45c427b8fc966f4d1fa72e48278c3449e45f71d6a6798ddffbfedbabafffa378012c6367fddeb097bc4341565045ee95d3ab5dbfee14f8ae724d0827fa7226e37ef24c96bd8b3efac033185a8b91be31f2adff36a80ff27a02f2adb8de9a5c1a54e8fe1f628871e9a9c7dfe166d9628bdbf7f97a149c360049b24d25e26f23d38153e1c6a34cfe32cf2c1163131d18d1b4eec2536580454395957eb806ae328045e5d762137533d1958a94545a096cde5377403c8cb67cfcaa7163dd72a76bb0bc46bdf187919daa028157918c905a5302d0906bf81b24188d1a33190a15a629d437956520ede9543ba12bd5818f205eb43f225762c39df2ab43fee6527e8ce3e222f4575bd2f86aa95cd3eb338725ed291987e3cf85130bf49bdab50433a5e8a10f096900a73114c429aec5ca2732f98e21546588d54d271ebf75a5504df0c13185b29e32820a473181480933a083fe01d60264c380ca4c8825010e5945d09d0dd78c950ee401e8f0d6e1474aefc9f40101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff03590101ffffffff02d0dd060000000000232103aa5dc719593db872a724acc3b73f1aa9b9f27ef495732a610ba1a1c7a26bbbefac74b701000000000017a914ef775f1f997f122a062fff1a2d7443abd1f9c6428700000000").expect("Block bytes are in valid hex representation");
pub static ref BLOCK_TESTNET_10_BYTES: Vec<u8> = <Vec<u8>>::from_hex("04000000b6088ea3f1c30d9ab14b551f18fca4441ff4fd8f723b82bb901b981bcdcc35022edaa1188cc82324f77ab6c52d37a30c2837b4c985681beae1256c321b188738000000000000000000000000000000000000000000000000000000000000000081971358ffff07200100059812b5da85543a1c4f96478e93a3b4184d3bce80d12d78bb5e6c660000fd40050021f6b9661ee6bfa83b25520fc1df97c3195e9bef12938416af931943089413c5a4a087a5e206966ab5164dd67522722751c2c5d495053ee06e3d6a5bd0a618ef0a831fe75f9197dab273a2c6a06e3f971d8a9a0afced428e66788b8dd0b33c5a5f8ec6d23078d07c20b10ed32b332cddbb3a064189c075d2013058d8780bc22509cf247ba330688798624785066e261517a610d77a3ead8b74dcde5ad6106bc933c9c4213dd03214746b7fe9e9ccebe69163b72fd759d0febd5accd023b451f32763851bfd5f72a995f0ca9546301ac5ab24c13636f49cf37db96a2375f8db3fa4fcc59faa1766f3e5518aadac05acb6f6a96bf69cb263a4deafc014e09332adb0feffa613a5066ba8e2eeceee3916a751ea0dd1f46b3c89a2a82547903dd4879dfcbd682622d96a55e7ce956d4c01f7b3af737d9e6bcb1bd6b527aac51e018aa88dbdfc3cc45071036fd1ba1f1b4b03a27207262b13855a31823980a5030d0c033fcb532ee2a626d714e883442ac6082fdd6126808cfee394164adf1a26cd01df48bc05e2cc627b5398dcde9edb242486e9679db29334b5e5aae5f8c6ae10c1dd9df305e827c6a7887bf784d601a21313c37e4a309a9ef013cf328e17dd41710839926b065902e49f39e8c67b0e88a4fbbac3f5cc5b15b656c4e32706395857fb3a2da5a6b76aec7b598898d7687a692f1af67c9f3e370d3c42c06c3d1e37fe2a547de0df7aa9e70e51fdb432ebab7730996cbddd01b37b5aa87026c3f2b7eb7f1ad4ca08d691c7fff8ad77e1efddeafed82f3835363046f643c5b34ff9f581971d8dc26085cec7743937129cd2e45a8fc47f5b05418f015012ca372c74b5902ba95efb568f47c484c594c920b5b0a39d0b1ede7e3a169d9daa6303738276b4be2e5423c2253b7a36844c627dd4189b70e73cd04610fed6dc7246645e5de10109fdb2d7d469b974ca406a1dd928d82890d64a5a19fbe150bc2834c7e22012b9eb5d3644c361da345b0ce38a0e87edb1bda4d665f09dfeb285d9c51062f022710fc6fb4a51d14557456eccea5a464c3d1a924c0af371e9f8573fe12ac461aab171214de83cfe36610d28a3feca0e9712adf1031b94e9d2170d0199cd7d10ccbe569488ea824c1362ea2a7d515186bf11b7eb4d7d62e9b5d7bdf76edb49897160d076dd64b8b0910266ea9a158a50f5be0923c5fb1f246aafa17cc25d113ec4fce458c943d68462c15fc10a39d6a7fefed0336c2f09d216f84ba3216504903ac5ba3920f943703451d7a4855944f534cef72abaee55fdf7c29a224f03880999f91a73ab594e51fe7f184a90d87648bdb52585d18c264ee201161732b2db56acb4c3401df3970574e5493acbc82a8682e59f136a09176e547de26a1b3863351787c581760081b3dc3a1fa517f6162ef305845a8dfdcbf948a713d1b49bb103657a38151cd6320fb6a181d48c5ff88063dd6cf69de225f0361d241603596ee3e647dbc50b559a1e5c35c1cf6dde923226312faafd3be345ed5229bcf4fdbe0f0191fd294d08542cd3cf095e6ad52e81796a225964614f189aca10186d975ed9d65d8563b1968bca4d41b5b69fa0de1f3e49415a24b97f58b3d2b6fdd0f1fdb6c2de99aa2de3cfa3e5e9503b60d98790956c16fa3cf2de56570ae43d32dcb20fdfa286846a3d348f9b7204fbe7930c2e29ae6dd2e917d457b26c187c36e282a09efcf918286f6920604843ad0446f3074168838bd97ec08874d5971491dddeadd6060c12b9738b8f0964f9649e168ff378340c780bcd7478ae32dc74fb604fdb22a55849a7f0c763207d6a35a9071567925a4c12d3b3a2182f38d2c8882627ab9dc18f0f9077e972c1306fc21d90b9c259235677ac31f60415e20bb65426d5308a0101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff035a0101ffffffff0220a1070000000000232103a42464b10ec3441beddd662ba25898dd244e7dacc4f06c01a23af82decf95759ac48e801000000000017a914ef775f1f997f122a062fff1a2d7443abd1f9c6428700000000").expect("Block bytes are in valid hex representation");
}