diff --git a/light-client/src/fixture/localnet.rs b/light-client/src/fixture/localnet.rs index 2247fde..4c3ed9c 100644 --- a/light-client/src/fixture/localnet.rs +++ b/light-client/src/fixture/localnet.rs @@ -14,7 +14,6 @@ use crate::misc::{Address, ChainId, Validators}; pub struct Localnet; -//TODO use local testnet data impl Network for Localnet { fn network(&self) -> ChainId { ChainId::new(9999) @@ -40,41 +39,27 @@ impl Network for Localnet { } fn epoch_header_plus_2(&self) -> ETHHeader { + // height 3002(checkpoint) decode_header(hex!("f9032ea025fd8e3985b54102fa82d1354f24d18cfaf1acb63331a26e58eadf61edde12c1a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948fdaaa7e6631e438625ca25c857a3727ea28e565a0d269e8b47a345f3a77343f46943f78480a96ff82a8466963fb4a29c0e2b66091a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002820bba8402625a0080846699bbb4b90111d98301040b846765746889676f312e32312e3132856c696e75780000ffcc693ef8ae03b860b81e14b27db67a9ac759e83ee9b5b4d201ed1e3756467d554bcb637cd02b59b0a715e44bcfdb66a768bfa2f51fb7488b00716aafb5e8c361e85da10144fc25f8fc6c9644228c66cea7912ac73bb13314d0e7f44818641121850a15b89b835649f848820bb8a003658f11880607bb5d603ac72c8dfa1e490d07d06dd232c0ea02acfbf51cf515820bb9a025fd8e3985b54102fa82d1354f24d18cfaf1acb63331a26e58eadf61edde12c180440276aff523d87f925f986abc8d181782d7e10088d04e2a1f09fbb0094d321d0b50d18fdccd137333e9ebafcef30e505796ebfcec6d777c7ded9e5719ed830301a0000000000000000000000000000000000000000000000000000000000000000088000000000000000080a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080").to_vec()) } fn epoch_header_plus_3(&self) -> ETHHeader { - ETHHeader { - parent_hash: hex!("94fd52d22bffdadbdb22f6d8f5ff8843d7bb47cc4ed34170168862437d830c79").into(), - uncle_hash: hex!("1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347").into(), - coinbase: hex!("0bac492386862ad3df4b666bc096b0505bb694da").into(), - root: hex!("a5c326c2677e2d80a74326c1fe409c492f062679664307411e769aee4439b68c"), - tx_hash: hex!("7c506aa939b812971d33f7382e444605b41e4d3c457bca15de3d18a9f9402a69").into(), - receipt_hash: hex!("9db976f1d7b56eec4ef92e0e8e38eafc9141f0359931b7265f59088a37adca9d").into(), - bloom: hex!("4e6ccf91b23a34dacee649efb31f6c7fc6397cc97b6db5d4527ac96c345d4390af6b74c9fbde9f372fee7d6040be274efd351c57268efb67fba605bb9d6b4b9ce6e9edda9b56288381755d3dcaa164bcadbc5334fff2a9bf89bfd521e3e09c4d82bfa1ba7b2f7bd5221da9f1f361ff79db4505473aae0fd6d37ddc51b1672d84339ee90445e57bfb3f96e43798fa2fefbc2d2fe779d29cd92fe40ad3e6da47e5bb0f6afbf7ffe7beeec66fce26efd6dad63f41b953bfd9e5f6b4ef68f4df74697093d70eba27bb7b33da8eefcd9f7e2bf6d783af65dbcf173976de52e20dfd3717faee6fae56fd9f2d9737d69bd3bb66e1732f8af6f446fd7a26d81c6b69efdf").into(), - difficulty: 2, - number: u64::from_str_radix("1dd8eb3", 16).unwrap(), - gas_limit: u64::from_str_radix("84fe2c6", 16).unwrap(), - gas_used: u64::from_str_radix("ee1aa1", 16).unwrap(), - timestamp: u64::from_str_radix("64eee09d", 16).unwrap(), - extra_data: hex!("d88301020a846765746888676f312e32302e35856c696e7578000000b19df4a2f8b5830aefffb860a70735caccfcae04b5262d8f2fddfdde93b01c2b9c05319abb844c5512c30ef105491ebae1898c217ee585b5895159e40068f1f80f52a8d302cad34503cbe3a9d765708388e75c15b3adf8a27697b5afdeaa93d60c4e2668dd15244eb39115d4f84c8401dd8eb1a08398b4664eb55beadbbbb8ec08dbacd78322cb3274dcd8bb53999be2b784cd928401dd8eb2a094fd52d22bffdadbdb22f6d8f5ff8843d7bb47cc4ed34170168862437d830c79809b4e20566a9f785f109a5821474cdabf036fd19e217405b8de50e2deb9896dac59c62c8e39c32e3b48e5e37d335c528bc72ca86f0142959b37cb6a9fe97d76e601").into(), - mix_digest: hex!("0000000000000000000000000000000000000000000000000000000000000000").into(), - nonce: hex!("0000000000000000").into(), - hash: hex!("13901357854d7c35878d6ff9a24714e0c21f1beb95e0b55667b915d2d74c729e"), - epoch: None - } + // height 3003 + decode_header(hex!("f9032ea0a0ba568f97f440f05b848963b32de2ec953bd6f369d472dbc9b857c9ef1e7233a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794a7876ea32e7a748c697d01345145485561305b24a0d269e8b47a345f3a77343f46943f78480a96ff82a8466963fb4a29c0e2b66091a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002820bbb8402625a0080846699bbb7b90111d98301040b846765746889676f312e32312e3132856c696e75780000ffcc693ef8ae03b860800da6d91bce0ef0122d0e2979856deb2baa4237c137e939e723ab8165944a9b5f9f6a60d13c25c0fcfea99c57e070be13b06617c4d0fd35df55f8b501d54c914b6401469b8ad5885b1758ae0093031eb5c6f8905b90e79b69f702f1c7d35d0df848820bb9a025fd8e3985b54102fa82d1354f24d18cfaf1acb63331a26e58eadf61edde12c1820bbaa0a0ba568f97f440f05b848963b32de2ec953bd6f369d472dbc9b857c9ef1e72338033e997a0ed0c46a1adedab82e91c28ac381d5cd82afbbfcc4e69b6bb1521deef4bbce9858d423d76e640aa9f71eeb79868d5e361a69493b5d70932272a16112001a0000000000000000000000000000000000000000000000000000000000000000088000000000000000080a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080").to_vec()) } fn headers_before_checkpoint(&self) -> ETHHeaders { - vec![header_31297208(), header_31297209(), header_31297210()].into() + let h2999 = decode_header(hex!("f9032ea068a9cc380147ace998644ff3a6b5440e14cb4cd4d904a830fa00f2d33fc54058a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794d9a13701eafb76870cb220843b8c6476824bfa15a0a71c3f989f207cf6cdc3bc68ec53af5c1b6b7f7bcae678cb63fae4fc6816e34fa056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002820bb78402625a0080846699bbabb90111d98301040b846765746889676f312e32312e3132856c696e75780000ffcc693ef8ae03b8608eea6e94ca63403e1c0c30804bd3f63cad41b47d7fe410737cfde6a55e3e29983d59e6e2171a1fa84b6955dfd36adc0e08f1b43d434f58a4410529bb4f808e22dd65146d8f66e9c5f2f3a7721cd74beef4703877e7615c0f262890f457f3b24bf848820bb5a08e77028f4150c6d718a40d8be70b88d9656c2d008c862da62b7d26ad05ec568a820bb6a068a9cc380147ace998644ff3a6b5440e14cb4cd4d904a830fa00f2d33fc54058809c414f9c092bdc2c6c7e1d95d88c5aedd9c3ff2e590cfda7763731e8f2d3ee14343a6caa8f686467eb407be68af713004a6732c2bcceac3f1273745629996c5d01a0000000000000000000000000000000000000000000000000000000000000000088000000000000000080a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080").to_vec()); + vec![h2999, self.epoch_header(), self.epoch_header_plus_1()].into() } fn headers_across_checkpoint(&self) -> ETHHeaders { - vec![header_31297210(), header_31297211(), header_31297212()].into() + vec![self.epoch_header_plus_1(), self.epoch_header_plus_2(), self.epoch_header_plus_3()].into() } fn headers_after_checkpoint(&self) -> ETHHeaders { - vec![header_31297211(), header_31297212(), header_31297213()].into() + let h3004 = decode_header(hex!("f9032ea004ef2295553b6027f21ece606d025a8d8570a3fd32158a94815aae4d909d3995a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948fdaaa7e6631e438625ca25c857a3727ea28e565a0d269e8b47a345f3a77343f46943f78480a96ff82a8466963fb4a29c0e2b66091a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002820bbc8402625a0080846699bbbab90111d98301040b846765746889676f312e32312e3132856c696e75780000ffcc693ef8ae03b860a66f1645d3eceac7748a9276f0278d77b0addd4191bf7dbaa94a99e9c06a5b43d41f532afb814d7fd2920e937c998fca02234bc67c9edc97a3ddc8bc4539c2437e8d57f277b7f97eb291c2320f32577d998c23d2aceccca1d179aade5e529d90f848820bbaa0a0ba568f97f440f05b848963b32de2ec953bd6f369d472dbc9b857c9ef1e7233820bbba004ef2295553b6027f21ece606d025a8d8570a3fd32158a94815aae4d909d3995805dee440fd89eaca912a168bc32a3ce09f0bb8602e3211e5b4391b63ab854a2043292951a876bb4dca48c09f8ba9a1bd613ebab8d1a1c640b49b6698ad2b0ec7501a0000000000000000000000000000000000000000000000000000000000000000088000000000000000080a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080").to_vec()); + vec![self.epoch_header_plus_2(), self.epoch_header_plus_3(), h3004].into() } fn success_update_client_non_epoch_input(&self) -> UpdateClientNonEpochInput { @@ -103,6 +88,7 @@ impl Network for Localnet { let trusted_height = 39980600; (header, trusted_height) } + fn error_update_client_input(&self) -> UpdateClientErrorInput { UpdateClientErrorInput { header: hex!("0a222f6962632e6c69676874636c69656e74732e7061726c69612e76312e48656164657212fd460a9e060a9b06f90318a0aeb34c70bba2db766857340f3b9a391b5332c5be7dfc6fd45117d95cf32bda85a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d493479472b61c6014342d914470ec7ac2975be345796c2ba00000000000000000000000000000000000000000000000000000000000000000a09327a61481b2408f2a2d3cd4c1956259215eedd9f5f4cfe53ef0df89e80f335da0b35856be0503b120103115c6bf48ffd750e2e83880676f70dc34d9a50e64c247b9010086260674d1c0d73c1d5439558051687683845288bc1a18743c2f814631882c40ee4cb9a2e88cc19c00d0ffba0a9e52229b8ec1199402712450c0e129dd2e34e1e76229f4ff416ca91999c02be1244ebe72319828856ee26620067491c7350a60c8ec82234aeeada54d47cbb2d56cad888acace4fa8ad4d781a086a10834a41c1ced08b15a31d0fd6d49a74ac4c9859de90678ec168b1447b2ad14aca95820d302bdf881553828a51931897e70e823cdb756ad6a59e860337202804322910cae3e53a565e4a00acd75e272289417757352275514595e7b09de390550f72b0fca83118a79791f57909630507827a144d4015e48d3be9ba43ca3b6684307a210ded028401eab9f784084fe2c68401193c0f84651682deb90118d88301020b846765746888676f312e32302e35856c696e7578000000b19df4a2f8b5831defffb860ae89c1a42abb17a167fd49be92d22898e1a449743966cc36a8813508a5e5f8c180e0a2713d5cc8d748acd0fdb95c3a9d0134fec56824b3b1901378823ffd3e98d36bd1574329805cdd96499704ce21dfee1c3b35e744a4dd5f2e8c811a939143f84c8401eab9f5a04faca5268b7a0425eccecac9a27a75e9e4e6abeaf018eed562ef01a8ff8f6cd78401eab9f6a0aeb34c70bba2db766857340f3b9a391b5332c5be7dfc6fd45117d95cf32bda85804ef67727f6a4a908a26a1229538a5b7f90bec3e2e6b8fc5420045b8c5520343932847f59933c3a400d088d5fe9f5fde2ae5809ac8b3a11de33e7818c8fec422b00a00000000000000000000000000000000000000000000000000000000000000000880000000000000000800a9d060a9a06f90317a0c2bb1d712ce142a2ef22b975ed83416ea31f4545b297765e7456d0c0ebeb9f28a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347947ae2f5b9e386cd1b50a4550696d957cb4900f03aa06afbbdd36cb61f3d2a651bc6218ef4b7fb7ad2367195105a67e952189dbc3188a03709615ddca48112289d87be4f8083e7067d4d0898f983132558e12a897c1d87a08227455c29c40f1bbbe4792e2b9814d98cb622d862f5aeca8373dfae7969e8deb90100527986d63768151ac9100068b058b15181120286f3710c10315231ea512011068a40b85371d9920143217125061e0022a922251aa54b564851d018b5322e06e84e0284800b610c5011b4488daa630abc30d8092409742d4185661a5480143d20483ab8b35a2b61e64c53181051490f3b18818f5d814c05a453e7ac982a08455010e2e4213709480d8ac067480a4c09b8066c8cc5310e01084b99ce6078f20c6fb3d100f256e88197218058454b8ec711314200612a0a4325b022a66824eb28cee540cd62006443c712205a0d423fd94d23d1af94d00215dd6512d4d60064e57408d5a043c0e8c3ca231402ee4820e524710004104738446ebd5b151e4c614844028401eab9f884085832a783cfa37b84651682e1b90118d88301020b846765746888676f312e31392e38856c696e7578000000b19df4a2f8b5831defffb860a1f5946901ac7f9e875f2fdcb906700be782d4720fda4bf4c5e9680b62608c09c051723f6eb08edca330815bf3836987093575166c87a59e64cc7798737d2c4d3eee7b080d888a5454e689a3df1a6e1d2b655dec52ae3f8c444b90a93ea478b6f84c8401eab9f6a0aeb34c70bba2db766857340f3b9a391b5332c5be7dfc6fd45117d95cf32bda858401eab9f7a0c2bb1d712ce142a2ef22b975ed83416ea31f4545b297765e7456d0c0ebeb9f28804f1bcd3484aea92f5ab7772ec713cb6f94b092c251b5ae134bd178111aaf5ce95b23b86e4965e9578cfd6240ec8b7a6effa75aecaa6326cfa42aceec2b69a59200a00000000000000000000000000000000000000000000000000000000000000000880000000000000000800a9e060a9b06f90318a05c1a4ac59fa493c7add0898f753bd3b6eca7717d0424cc3660d9908233989079a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948b6c8fd93d6f4cea42bbb345dbc6f0dfdb5bec73a0f82ea8b35f53773563a8ecb3287113bbbd5efaedcd09834667e32212ff288fbea0689b79ba82934bb61ee8f64af6f980d9bf164419dc9329f9d62a33b621e1a5eea06f8a552cbb9e52bff118baa395c75251a3b582c0b6dcc93bfc4fa0a15cca1dd5b90100cfa64722a69e3dbe2e9978dcb71e5cff8f31e4f436e949285fa0ab4f3b89ad5fa7b1d411f036b680cd1a337a4512e71b9f1f1eff1192aa4066cd5a1e743c2a82bc41ead1af65dc218d7ec42ca585c7bf699f91a4f354da97efacb534e051bc91dc3ddb35cf07d9cc544f9daf23632d192c3fdf498a81ed387a70b615fe8728d7d5ead0ae3a2100759197b4115f766988213e2607ff25195b2d5526c68b684cf5bf910071e2afab080fbc1dce2f9e9c9a45e3035d3ddbfc2962543e22eaeb3c60d0acfe2667a46d6e10d398b91c33d4e06671fb9a959f8f3d4511d5febdecbef813f2c752f3f3ddb8893758fa30ab83f972b24c1843b34ec81e4fcf5ef8ad6c4a028401eab9f98408583b00840129f24984651682e4b90118d883010209846765746888676f312e32302e36856c696e7578000000b19df4a2f8b5831defffb860b0f58980edb50dd10c56c83443f5ebd140d430a422bfa1168da234e15187977283647b7ec30a3443a2d5bc5c705ea19d193782aca1a29a5adf2e8378e2c86498185700253f885dbf3c58d05a785f9bb3dcc914fbbbcd4addae9aaf8a3eea0575f84c8401eab9f7a0c2bb1d712ce142a2ef22b975ed83416ea31f4545b297765e7456d0c0ebeb9f288401eab9f8a05c1a4ac59fa493c7add0898f753bd3b6eca7717d0424cc3660d9908233989079809d9d51ff8ea924fcbb62f90bd0a6185457a3a5c6e7d074acb2d35373e02ab466039d3d23c795be05eca2773251b0bb4ac7dc25e247d3f295ffb6421e6b65fd5b01a0000000000000000000000000000000000000000000000000000000000000000088000000000000000080120510f6f3aa0f1a951df90e92f90211a05760c478b528201548b880f9df75f669b35285dfe4bce3a2245b6fdace23806ea06702ed5328fc88ae32788582fdce6087c3772e9f2872be07dddfd72bce23e6e6a076fecf1768f2efca0493b32434dc758cb1804a9eba8479ecc244490d02016850a05fc46706b33918b46e21e0552215669313eb6fee038e8662a364d450f20b765ea02162336e1f97ea3aaaf26e5482e752e3bc335f146b08a4ec067bb2f6b66ad4eba0f9c52bc52d2bff446b57580612ff3d5e5ce63fe38ae9a6c286068fe6d8dd69e1a0f2ffb55c6c86989060e530e9300716eb81b402ee6e54d6845e40f256cc5a30a8a040307a80bb9b2672c1ddf9e009377bf6f792ccb6471975a7efbae167310f32dda0ed0a7cf42511cdf4c79e1cf995074202e10b148e9d8cc9ff459ea63bd456c292a0d8642102cd0c903c286313b4da9fc2d576f819d24c5dc9decf7a72d6c5f3a6f5a0a72af8ac881122fe9e28643d845ec0bdb82e7c6844c4e90d1375b3b6d00b2e83a027e16ad7e44adc72b9f25459e50d59ebdfc2df5210a317e9af7e6953001b06d4a0e2c69d81c457b2499b10a65b4764ea149ce06c38e20a1b81034c86c1072ed008a000f2f7a39a9572c5eaf08e46f20a46f2b3b9f0dba44940cbb3b717e8cb72cd0ea053da4d2d3e34749b27aa7867bc4eaa05c33e5ebb914eb7a2eda4337b302fa43aa094da8ed2b23a83012b966d1361235fc24cb33a0886be41d9ee19862cb313094580f90211a0a2128874d2823da6bd7cdf67438effc0e407274501327d2405e25687585eb70ba05b0986965e23b96ad60c8af08434733c40efe29db0c993d7ba9bc4ffa1483ba8a0f43d30c11169496786df08702b0080269f67dec4afc589a629f481b16d19832ba04a12b6f2493e006b66605e1d00af7f6eb3f6c733dd84cf40ddf5f89267e8e7aba064e170ac6680f6cdf1e42faba258367fcf0393b6b2ccdc896d90acbd23ab5465a070771a010394851774d88d286b57bdf9faf9d9356a2240128eb9de145ec2edfba02dc8752dafe069b464c36b8509826d726c1f131f205a49fe8788659122203620a0f63f4e9a984f664b13b67dfe922fc3a560efce6720b9172614e11965dfa3b711a05afa9694c979c6904d88cf2f248a755f41b78a44ecfd7861bbf11ab617528723a0b5d0e96e1a30c464bcbadf2fb1e6587f30c26e611912bc71298309869803e01ba0bb30f6dd3be410db17d680911856ad5068698256462beda07b6fa0ecb2c795d6a016d61ebc2df2ae26c81a9e42e21e690835a3855cd5fb8b080914b29e61b0cba9a07f3f00a25937d9fa7f5fab4e72c39e7c61e2744c3a7f98489ab4d1b2e7caedf3a0cb308105ad0e53f8295d98d64926f0e932459a9690b5a54bcf5557985cf4e401a0e5fd124381dc44dcd9fc74bdc6d9e73eed51c739aad2270730c146a80ae4f1f2a02bdd929c52fb5bbcb95162cce765015a272ef934c1c0c7ed38c8ca2c0bef5ad280f90211a0e6d6c23fa1734c2f5d243a3cfb0f39cd02cfbfdb4bc3c8f431aed32fcd2854dda03869abaa6f82c34c1aba13cfe0b7ad104312b8ca918060c181dd406c8a99260ca0f753573922dd3666bd8c5dbd5b4ce6de8a8f0800188c034d383d8916a53ce3efa087492846af03fde43add538ba9a0cd3a58dda4f92af41fa5ec85c724b3569952a0251aab0f729960016c67c4450afcea003fe27516ae12a4aacbba88c2218d609aa00773c02f14993b861c986adb86c48e2b964b04fc93b7c14e0adf236ba48fc3c3a0895fe437ecebfb9a688f7de6f3e9ef5118168fc60d9eee552eb504d64d301f6fa098e233266cb2949de7efbc5249a002cd0e347ee19307a53498a6d46ae5dd5e5ea0668cead9c0b63d7ebcb34a1a5864a894baac5fc4a85fae89ff6301645b1a2c5aa0001d500e083c7b36f84d6d19af62df79986281f6c826e47f44d7b97c3d106af4a0607867cd831b1cac0eb801706ed0a6c762746c07b8ee12870445c526da6058a3a0c82d3b93fbfab9bb7d75a7eae35fb9ab46558857867d24d65de62e93befd63bda0a39ffe983c540e96c66156dc256c27ab556267c1169629ebecf09c11dca8ad7fa09917ddd6820b6c66429eba999f5030141508a439dea8393b098035dbd283c287a04d959bbbe8ea6b950a3c865aca329123dac37debff5ea2531c8a25af9e09b1eea03d184ecdda0c942db6d34a492675d82093b1bdea5eb088d69e6502fff16bc71980f90211a043beb9ae278028ab0e6ae1dd97bfc1adc7da5d5b35418cde1372ed15dc60d844a0969897f77040974812fdc243499998d5a2f808b010e3e743fff5bb1cf06701b7a072a62f95c81d3849bc02102bcb66b5be775ad3b68cae7967451e6a13c48b6c43a0488199752a3a18aaaaa52b07d5a306826c4ccb2afe3cb30058de3e361dee74cfa0a63fb5ff17b1ca7f9c095cd9a888f4fd493a3379cdc2a0cfb49353c854923fc7a0ce7a2593ac4b8c89ad4c5fde8940d9695e969cfe6eb6a614954a48bcfd715843a0cb8b4d0264778a2ab04b96777ffe78a5ee62483a87446fceccb37813cda25b60a008fac15554b1c384ad91aa696e7e5e5454dc0c0fa343bb26b48a4f34ec95f785a0f1811154dd01ffd9f43443acd407e0beee53bbd03f40f63b7d993681182f0289a0a620126c5db0919a29b4b27c728dc42d2d63015849527be64acd0062b575c0eea088d3cde1a49a0ac95f076d1e15b3fde9cefd0f7e308f53b3aa466eb0385aec50a07f99a989d621bd1b59fa51d109f6413c9cb7f8ccd704dbf13cfb27bebec8f1b1a04321111d914057fe87d18e8c6f4128c6c7778fa2b73d435f0b2562c5910361a2a07ee88a697a560dc7023a840f16df54c599dc345e787927bf6628963e782a6847a078d58eb776d8d9dd6dbdbdd830b0350bd0427b15678ef457da5d41ec2cca708ca050e0c4585785b9c800e24c4c4e00599d7e5c4e6d8f3363979ab6c49ed514f12680f90211a011ff0a2d404fd7ed97509ebaa806f2a5ba09c5cde5ff596903c4313783487509a014931c578b05f5948939281aa31d2bc8b05b01c6932c45bf7a70972a430575c2a07272592f567daa667135799961e9eef529a6cd754395e39694d9452ae24a8797a092b17ad714173ec4787f0b3b9d2dfa96680861e093b5121441ffcde64183d074a06db41a6efb6f94c7d185f76deb8bb00468715bf6828fb63db31b880a6050c54da07ce695737ab0d4bf9003a06ce83b11e75d81fbeb47c013b41f9c2e00a97cb87aa0dfe63771f833e98a5aeff54d9dd5a8dcfd89ca43c23644b18ec8e29ab8ccc287a0a327c817dc8a8ea3a5d3ca3cb55169777a1bfa30fe9f0df842eb3978dbd6737ba053683114bdaed7819b30ab8baec1fb9a2a96fee4dabc72f319cec9869da3b0b0a04d98297a896312d18da40240ed9a527f4c01c73edd3ea1f7c28338d1d863d97ca070451b5f2a402b497659eb18e648ac46f39c0068cc91436eb0b082b1d06dd63da066e866f800200512b0d3e534c547f4d2012429152cc9693bf1553cc22361627ba003fc4e648aafdadd7a9fa7cb534103f08dc699413ecda22bda46898bfb792429a0b46a167c66b50c74227d03a68971e124fdd011d6c90f5a08f6fe30ae34de603ca0a7ced66271235bc27b154f37bee6d9a1366cd253176c96de707d124fcc593c35a0f4f09b104a86cefc5c282d393b415e6c224eb8a463386448ebebfad9f9f53c9680f90211a05f93540f4317a4c6d8b73556a7ffdab6fcf0aa36af84b8c4bd2a3e7114e2da4ea05dd8c13b1b83485911f5e1185669f7d5559c260193a72e52597a3e80736c248ca03d50a67e8ec93696c35865d9f03814e95406c8d04e5decc320b9a24e5beee1baa0a928e2ea8773ba69dde5344d69069b237667dbaaa69e86133d4e444e432799b1a0ebb2cbf0c3314ddf681f21a29fa17b320094684ba35e725bc36bbc407821cfa3a0762aeb8161d2b1b8a5ee51d1ede36f51cc2dad7e0c4d0ff097b89c831aff8c35a0957a8eaaac924688482d21a95b7a7f01889ab39a7a50d58efaaffa9e486ae071a046c10b0c15aa83973ea4b108f50bad2638941550fce7c9308c8b968abee271f8a08a831384faa68f9caa047a6200464e11cfe5f9f700a5ed9435e5241d9d2a501ca020630d0f41d1f38c61fc8d3fc6170f6f11fc52ade454930a3b5e4f4491b47467a04539a99793f29484fdbd39b606f27265499acb3c24461f48858655f07166f0dfa05fd40548cfae17d12e103db98572f22cdc8dd3ec670be570727a7ff68f6bce9fa032efe866f058f79ef06de75f682e10773576eb9fca3f950fda96ea9926784685a05c170d685d29417781f678b746174c7500e7c228b4bd71bcfe9f5421742a0b67a0c3fb71b77522f06c4a4e4cb7029e7faeb747b8e446460586ea0d5e9abae68cd9a03f2294bf8bea287c7afafde4b39aaa56716230ef425ece688f6a78fcadf5f49e80f9013180a0c2cb770a3d18eb1214a782cc81b79a7fd772716c2d050ef66011095c3774e8f7a08fc7d7da06fba7ffa69b095aae41147e3a55b89644682057cedab705ba7aefd5a05975b434f69398107a4d1729f8f56e75247df09c65b1a750797818607bf118df80a026cea4c13260b2a1dd74bb6fcc7cc36162d2856ce691a36165c633ba68f7b783a0f7b0c667509a4ce937c487b45bc53c0700543daf4f8c127fbe475b4e1084d2328080a0454eca3fcc32afd4c4000ccbb47732bbce342b1a9d374fb5872162f2c873625fa0b3e6c44579a731cc730a5472e83c6098fa2943e5b2c72f4475f0afea76848a87a03b8c951788b8c93366aedbf88f6c1ca6085cd0249025ce542f19294b40bb92f180a0a10cfa51ae290afebd64a5b530db7088fa0b02f22ce9b0838135b422b885dee5808080e482000ea07b2632b8b97e159d88f112a8dd9d44df2f3c4502e0c79a29297ea7f61f41f311f851a030590b16841225b9590cdc95b19176201d442ca0b931c6e4314d20a1c772ea9ba052e8f9f247cd159c65b304863d444087f6a60d7dbec3a0e4fa09f007b5a1c64f808080808080808080808080808080f86c9c20120c458c4c09a9448628f84e81161b308d5c4041a3d3a1ea329d0eb84df84b0487400e8b4f1c9c00a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47022440bac492386862ad3df4b666bc096b0505bb694dab0bec348681af766751cb839576e9c515a09c8bffa30a46296ccc56612490eb480d03bf948e10005bbcc0421f90b3d4e22442465176c461afb316ebc773c61faee85a6515daa8a923564c6ffd37fb2fe9f118ef88092e8762c7addb526ab7eb1e772baef85181f892c731be0c1891a50e6b06262c8162244295e26495cef6f69dfa69911d9d8e4f3bbadb89b977cf58294f7239d515e15b24cfeb82494056cf691eaf729b165f32c9757c429dba5051155903067e56ebe3698678e9122442d4c407bbe49438ed859fe965b140dcf1aab71a993c1f7f6929d1fe2a17b4e14614ef9fc5bdc713d6631d675403fbeefac55611bf612700b1b65f4744861b80b0f7d6ab022443f349bbafec1551819b8be1efea2fc46ca749aa184248a459464eec1a21e7fc7b71a053d9644e9bb8da4853b8f872cd7c1d6b324bf1922829830646ceadfb658d3de009a224461dd481a114a2e761c554b641742c973867899d38a80967d39e406a0a9642d41e9007a27fc1150a267d143a9f786cd2b5eecbdcc4036273705225b956d5e2f8f5eb95d25224469c77a677c40c7fbea129d4b171a39b7a8ddabfab2317f59d86abfaf690850223d90e9e7593d91a29331dfc2f84d5adecc75fc39ecab4632c1b4400a3dd1e1298835bcca224472b61c6014342d914470ec7ac2975be345796c2b81db0422a5fd08e40db1fc2368d2245e4b18b1d0b85c921aaaafd2e341760e29fc613edd39f71254614e2055c3287a5122447ae2f5b9e386cd1b50a4550696d957cb4900f03ab84f83ff2df44193496793b847f64e9d6db1b3953682bb95edd096eb1e69bbd357c200992ca78050d0cbe180cfaa018e22448b6c8fd93d6f4cea42bbb345dbc6f0dfdb5bec73a8a257074e82b881cfa06ef3eb4efeca060c2531359abd0eab8af1e3edfa2025fca464ac9c3fd123f6c24a0d788694852244a6f79b60359f141df90a0c745125b131caaffd12b772e180fbf38a051c97dabc8aaa0126a233a9e828cdafcc7422c4bb1f4030a56ba364c54103f26bad91508b5220b7412244b218c5d6af1f979ac42bc68d98a5a0d796c6ab01b659ad0fbd9f515893fdd740b29ba0772dbde9b4635921dd91bd2963a0fc855e31f6338f45b211c4e9dedb7f2eb09de72244b4dd66d7c2c7e57f628210187192fb89d4b99dd40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002244be807dddb074639cd9fa61b47676c064fc50d62cb1f2c71577def3144fabeb75a8a1c8cb5b51d1d1b4a05eec67988b8685008baa17459ec425dbaebc852f496dc92196cd2244cc8e6d00c17eb431350c6c50d8b8f05176b90b11b3a3d4feb825ae9702711566df5dbf38e82add4dd1b573b95d2466fa6501ccb81e9d26a352b96150ccbf7b697fd0a4192244d1d6bf74282782b0b3eb1413c901d6ecf02e8e28939e8fb41b682372335be8070199ad3e8621d1743bcac4cc9d8f0f6e10f41e56461385c8eb5daac804fe3f2bca6ce7392244e2d3a739effcd3a99387d015e260eefac72ebea1956c470ddff48cb49300200b5f83497f3a3ccb3aeb83c5edd9818569038e61d197184f4aa6939ea5e9911e3e98ac6d212244e9ae3261a475a27bb1028f140bc2a7c843318afd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002244ea0a6e3c511bbd10f4519ece37dc24887e11b55db2d4c6283c44a1c7bd503aaba7666e9f0c830e0ff016c1c750a5e48757a713d0836b1cabfd5c281b1de3b77d1c1921832244ee226379db83cffc681495730c11fdde79ba4c0cae7bc6faa3f0cc3e6093b633fd7ee4f86970926958d0b7ec80437f936acf212b78f0cd095f4565fff144fd458d233a5b2244ef0274e31810c9df02f98fafde0f841f4e66a1cd98cbf822e4bc29f1701ac0350a3d042cd0756e9f74822c6481773ceb000641c51b870a996fe0f6a844510b1061f38cd02a440bac492386862ad3df4b666bc096b0505bb694dab0bec348681af766751cb839576e9c515a09c8bffa30a46296ccc56612490eb480d03bf948e10005bbcc0421f90b3d4e2a4412d810c13e42811e9907c02e02d1fad46cfa18bab679cbab0276ac30ff5f198e5e1dedf6b84959129f70fe7a07fcdf13444ba45b5dbaa7b1f650adf8b0acbecd04e2675b2a442465176c461afb316ebc773c61faee85a6515daa8a923564c6ffd37fb2fe9f118ef88092e8762c7addb526ab7eb1e772baef85181f892c731be0c1891a50e6b06262c8162a442d4c407bbe49438ed859fe965b140dcf1aab71a993c1f7f6929d1fe2a17b4e14614ef9fc5bdc713d6631d675403fbeefac55611bf612700b1b65f4744861b80b0f7d6ab02a443f349bbafec1551819b8be1efea2fc46ca749aa184248a459464eec1a21e7fc7b71a053d9644e9bb8da4853b8f872cd7c1d6b324bf1922829830646ceadfb658d3de009a2a4461dd481a114a2e761c554b641742c973867899d38a80967d39e406a0a9642d41e9007a27fc1150a267d143a9f786cd2b5eecbdcc4036273705225b956d5e2f8f5eb95d252a4470f657164e5b75689b64b7fd1fa275f334f28e1896a26afa1295da81418593bd12814463d9f6e45c36a0e47eb4cd3e5b6af29c41e2a3a5636430155a466e216585af3ba72a4472b61c6014342d914470ec7ac2975be345796c2b81db0422a5fd08e40db1fc2368d2245e4b18b1d0b85c921aaaafd2e341760e29fc613edd39f71254614e2055c3287a512a447ae2f5b9e386cd1b50a4550696d957cb4900f03ab84f83ff2df44193496793b847f64e9d6db1b3953682bb95edd096eb1e69bbd357c200992ca78050d0cbe180cfaa018e2a448b6c8fd93d6f4cea42bbb345dbc6f0dfdb5bec73a8a257074e82b881cfa06ef3eb4efeca060c2531359abd0eab8af1e3edfa2025fca464ac9c3fd123f6c24a0d788694852a44a6f79b60359f141df90a0c745125b131caaffd12b772e180fbf38a051c97dabc8aaa0126a233a9e828cdafcc7422c4bb1f4030a56ba364c54103f26bad91508b5220b7412a44b4dd66d7c2c7e57f628210187192fb89d4b99dd40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a44be807dddb074639cd9fa61b47676c064fc50d62cb1f2c71577def3144fabeb75a8a1c8cb5b51d1d1b4a05eec67988b8685008baa17459ec425dbaebc852f496dc92196cd2a44cc8e6d00c17eb431350c6c50d8b8f05176b90b11b3a3d4feb825ae9702711566df5dbf38e82add4dd1b573b95d2466fa6501ccb81e9d26a352b96150ccbf7b697fd0a4192a44d1d6bf74282782b0b3eb1413c901d6ecf02e8e28939e8fb41b682372335be8070199ad3e8621d1743bcac4cc9d8f0f6e10f41e56461385c8eb5daac804fe3f2bca6ce7392a44d93dbfb27e027f5e9e6da52b9e1c413ce35adc11b313f9cba57c63a84edb4079140e6dbd7829e5023c9532fce57e9fe602400a2953f4bf7dab66cca16e97be95d4de70442a44e2d3a739effcd3a99387d015e260eefac72ebea1956c470ddff48cb49300200b5f83497f3a3ccb3aeb83c5edd9818569038e61d197184f4aa6939ea5e9911e3e98ac6d212a44e9ae3261a475a27bb1028f140bc2a7c843318afd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a44ea0a6e3c511bbd10f4519ece37dc24887e11b55db2d4c6283c44a1c7bd503aaba7666e9f0c830e0ff016c1c750a5e48757a713d0836b1cabfd5c281b1de3b77d1c1921832a44ee226379db83cffc681495730c11fdde79ba4c0cae7bc6faa3f0cc3e6093b633fd7ee4f86970926958d0b7ec80437f936acf212b78f0cd095f4565fff144fd458d233a5b2a44ef0274e31810c9df02f98fafde0f841f4e66a1cd98cbf822e4bc29f1701ac0350a3d042cd0756e9f74822c6481773ceb000641c51b870a996fe0f6a844510b1061f38cd0").to_vec(), @@ -113,146 +99,3 @@ impl Network for Localnet { } } -pub fn header_31297213() -> ETHHeader { - //https://api.bscscan.com/api?module=proxy&action=eth_getBlockByNumber&tag=0x1dd8ebd&boolean=false - //https://bscscan.com/block/31297213 - ETHHeader { - parent_hash: hex!("c74fda0e42d712edb445971bc504af27873c62f5f8dc7392f0e04a07026cff18").into(), - uncle_hash: hex!("1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347").into(), - coinbase: hex!("8b6c8fd93d6f4cea42bbb345dbc6f0dfdb5bec73").into(), - root: hex!("d7dc8b11d03723bc786b44fbd36ef47ef34471e1b7020f6d60a9239d44a5e4c8"), - tx_hash: hex!("90d350b4228b27f146ba9917abb86c867b6846ee277f38daa2fe908cdc8450f2").into(), - receipt_hash: hex!("23f67e6e9fa18049ca3a8d2984d1ccaa6d020b9d6ed37e72bdbbe6c81ff0f5fc").into(), - bloom: hex!("ad6ed6550e5cb77aa96db8f5eeabeed6f08bd2cf97cc48f8a3fa63eb5e89895aff4c1953f649d52773a33ae7f75ffe82dfd28ed945bd782f237fee1f9c6c6b9c8e54d4fe2d534c3b95f9ee8d8e1c22bf63b4e9a6d0e7ecd8effe51da8a2d2e31cbbf2a7e7b3fac29b4cd3d16dfdafbdd7acfacd3baadf58b7e47879ff04acecfcecf7da7e67589c9b6bf77901c875b1d5a769ec77e68fe9f755931cc907794e99a4c27e37bf6b7526f6eb65edb9f7ec2c0e6ada9438bd5ef3feb25a37df6b9f5a8ef7dd398430b6712f85f66b3741aeffde7d763c45b4ebcadbff5f6f23ce776f1fdfefb37f4d53fdb2537da5fe5cb77bee77ff59b3c7dfdfde3ff9c78e94ade").into(), - difficulty: 2, - number: u64::from_str_radix("1dd8ebd", 16).unwrap(), - gas_limit: u64::from_str_radix("8583b00", 16).unwrap(), - gas_used: u64::from_str_radix("12d7505", 16).unwrap(), - timestamp: u64::from_str_radix("64eee0bb", 16).unwrap(), - extra_data: hex!("d883010209846765746888676f312e32302e36856c696e7578000000b19df4a2f8b5830ddfffb860a7977214b4091a4d9b36b958bae429233d1c122d2c691f4cd9f34768b72b1cc391a23d5d7752d06177d6f870e32ff3f41553ac2e4e16c44adb75bf0f78894bed963b77213057866a75954538741a296446cff7d19c68123c8b710252bdf52c73f84c8401dd8ebba096014f0baf3bd1f8096f66e7ee026238ac2e2d199c00e2bf2cc5c0183ab47c4b8401dd8ebca0c74fda0e42d712edb445971bc504af27873c62f5f8dc7392f0e04a07026cff188021b063740fb3c1e3a639e7a4ce20a7b58abcc5718a1c8e78677eb75f1e4f86a514fbc225bbb3229f7b8dbc26de24eedf456f1184bd67418582270fe25dccc09b00").into(), - mix_digest: hex!("0000000000000000000000000000000000000000000000000000000000000000").into(), - nonce: hex!("0000000000000000").into(), - hash: hex!("e5ec815463a14fc0a652302d302e93c2a06280d115782a183f5378692e863828"), - epoch: None - } -} - -pub fn header_31297212() -> ETHHeader { - //https://api.bscscan.com/api?module=proxy&action=eth_getBlockByNumber&tag=0x1dd8ebc&boolean=false - //https://bscscan.com/block/31297212 - ETHHeader { - parent_hash: hex!("96014f0baf3bd1f8096f66e7ee026238ac2e2d199c00e2bf2cc5c0183ab47c4b").into(), - uncle_hash: hex!("1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347").into(), - coinbase: hex!("ee226379db83cffc681495730c11fdde79ba4c0c").into(), - root: hex!("375f3881abfe517cfef67f6fa4e4e6a6cdd55f59daba5bf549e42cf0f0bae4b9"), - tx_hash: hex!("cad310793c8d7a169ebb1f0bf1499829af25ff43a96620bcf8e4eaad746d09eb").into(), - receipt_hash: hex!("5f33ebd5da8fc4a50aad629c197df5ad9fa11b386856d7eca9e7198c3fbd8cfe").into(), - bloom: hex!("0020630015319710008002d788aa0006e509288314201202106a2105bd045316ea6050784001b60422282e8a0107c10081543311500c20b101900009d0e000900547848a555c0828250153880440a031b4134cc90c61cf08082c0a0084100660480a24343e6609090665c81083080873a884d47a860fce524101281480ca08988448aac0204003d7069a042320028080016e852d713a640c118059400d921c692a008826018046102200d24402a006204a0294040a0484e3d1a025f04b8187640122d507809022020004884157327008ac08030680202612451c44e30605a52d651050452804662b411c06a0016203a020040c2419284448a06155088081610d").into(), - difficulty: 1, - number: u64::from_str_radix("1dd8ebc", 16).unwrap(), - gas_limit: u64::from_str_radix("8583b00", 16).unwrap(), - gas_used: u64::from_str_radix("8dafa1", 16).unwrap(), - timestamp: u64::from_str_radix("64eee0b8", 16).unwrap(), - extra_data: hex!("d88301020a846765746888676f312e32302e34856c696e7578000000b19df4a2f8b5830ddfffb860a3fc89fc965524cbda1745ddb014024d04182e9da19f4f508c998b2f5236d553b042dea0f061262eea3fc046799555890b7c054721eed6d48bb2e1e20e520fff107617d2002090b781d866daa35943464bfc575abacdc000ac019a642565e108f84c8401dd8ebaa0ae86b11151a6e6bc2ee0b782bc806d02049f9c50c7187ab0e398b4faf504ba188401dd8ebba096014f0baf3bd1f8096f66e7ee026238ac2e2d199c00e2bf2cc5c0183ab47c4b808e9209f39c07332b1163d586ee07e35d16ba59dfd8484e9980cc7b128c55f86374eee7f035aa2bddbc8d6a3bc7707014e6884c2f95692ee683dd3e4440feae8300").into(), - mix_digest: hex!("0000000000000000000000000000000000000000000000000000000000000000").into(), - nonce: hex!("0000000000000000").into(), - hash: hex!("c74fda0e42d712edb445971bc504af27873c62f5f8dc7392f0e04a07026cff18"), - epoch: None - } -} - -fn header_31297211() -> ETHHeader { - //https://api.bscscan.com/api?module=proxy&action=eth_getBlockByNumber&tag=0x1dd8ebb&boolean=false - //https://bscscan.com/block/31297211 - ETHHeader { - parent_hash: hex!("ae86b11151a6e6bc2ee0b782bc806d02049f9c50c7187ab0e398b4faf504ba18").into(), - uncle_hash: hex!("1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347").into(), - coinbase: hex!("be807dddb074639cd9fa61b47676c064fc50d62c").into(), - root: hex!("25a1b664bacf9cd2c46f9eaa16ea6b21b0eb9e186a99ef0895746e00527d2c85"), - tx_hash: hex!("8bd39094bd4ec2b55e87eafaac3c1c34a523fc68581789ed64fc7ee81f1c3a6c").into(), - receipt_hash: hex!("868924fa9b72d69921a4822b4c248bc6912d1e0b07f95733bfd4cb19f9711740").into(), - bloom: hex!("0226d26210015a9200800bc4841410020000c000010ca902200001a0041020108a81f06042001012e030290002580185ce5090181182000c201b0400146c404c6b630011b9420050211881e9022510e82170e80209e40d18040e081c82820695422d0ca20e072249310c0804212038220c00800911235600004784b88048310000184da443149c840894a50e003301c8052624c1ec0100ca440600c8810854ad0212c002761c2222b124760c0e09240245380908578808004528916d5002a0b40824160318060b16308298c0403bf96420c30264000940376b7a4042221ce130903aa02810504100091114c2010859040890f22600204242a042011019110b43").into(), - difficulty: 1, - number: u64::from_str_radix("1dd8ebb", 16).unwrap(), - gas_limit: u64::from_str_radix("8583b00", 16).unwrap(), - gas_used: u64::from_str_radix("6da01d", 16).unwrap(), - timestamp: u64::from_str_radix("64eee0b5", 16).unwrap(), - extra_data: hex!("d88301020b846765746888676f312e31392e38856c696e7578000000b19df4a2f8b5830aefffb860b2cd9aa09d1b6e9812ab9f8135e8f1d4cb19aec1caad116b5f3e9e2c9f8b8c6491b0440640fbaa8e560c933d34726e090fc5b2958f86ccd547b9edb5b1e7a628e8176bf3eaab5126e4eee4876c1f8fac77ab421906cb31cbdbdd3aee7ca2647cf84c8401dd8eb9a0cb51a23528c482caed2ead54edafc305f0b9ee8b6bd579a266433e28e857d09a8401dd8ebaa0ae86b11151a6e6bc2ee0b782bc806d02049f9c50c7187ab0e398b4faf504ba18802db553b0ae5d2fd84035d0054004e044ac57424d7b3e10a696c914b563c1c65c702608d9eca7410647cdab23741cedb277efd52d151f0db53e88d8e7f21ac70100").into(), - mix_digest: hex!("0000000000000000000000000000000000000000000000000000000000000000").into(), - nonce: hex!("0000000000000000").into(), - hash: hex!("96014f0baf3bd1f8096f66e7ee026238ac2e2d199c00e2bf2cc5c0183ab47c4b"), - epoch: None - } -} - -fn header_31297210() -> ETHHeader { - //https://api.bscscan.com/api?module=proxy&action=eth_getBlockByNumber&tag=0x1dd8eba&boolean=false - //https://bscscan.com/block/31297210 - ETHHeader { - parent_hash: hex!("cb51a23528c482caed2ead54edafc305f0b9ee8b6bd579a266433e28e857d09a").into(), - uncle_hash: hex!("1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347").into(), - coinbase: hex!("7ae2f5b9e386cd1b50a4550696d957cb4900f03a").into(), - root: hex!("5d69f7ab2b1c76fbdbe2cf91ed2b2d515ab9e4e614f12377a29bd7cd16536481"), - tx_hash: hex!("d3d9091b8812a471b890629fc2dc64dbc5756c054e50b77dc41f9c59c35428f5").into(), - receipt_hash: hex!("6522a3bf645304f5698c92f770c022b735b08c97113cc2384c888d8a1bb5ed15").into(), - bloom: hex!("10a0926ca4b13410082800458641a0861014400700804248c4444dd012403411cf4090a044069000da2434209216d8c85b87e818010a622020000000c07002592452cc6e9341952ab1320789a82659bb333e812007400a902647003d818002e9206c233c0a428028241b008209428b69080048511452ef8f8002409457d801008c8aa1940238010ad0e115200c14188c79f6a687a88294a9ab0082400a1b04bd421ac060568303e4400a49440e043910a690840068608024408a49e01280138420093f4608a02986d0d012bd380210a2a0506242480480d53350c9820280a000503cb80c00403b91253914a0e90205c04560a6188a08626000133d4017c83491").into(), - difficulty: 2, - number: u64::from_str_radix("1dd8eba", 16).unwrap(), - gas_limit: u64::from_str_radix("85832a7", 16).unwrap(), - gas_used: u64::from_str_radix("6bf9c2", 16).unwrap(), - timestamp: u64::from_str_radix("64eee0b2", 16).unwrap(), - extra_data: hex!("d88301020b846765746888676f312e31392e38856c696e7578000000b19df4a2f8b5830aefffb860b81cf27049e5890b663de5dc314505ab868cfceb20ec851a3e537af30569f8c49f591367b8c5174e459a56a0d9e85fde0d1866d9e03c7d07474020208077c83fd57067f8eb2c4b0522492dfc7d49ab5a769b54649f7e3832304778500d0b9b4ef84c8401dd8eb8a077545edd1aa19c89e81b0a1360ab862aab49c6193a18a52ec22f5922c56a17b68401dd8eb9a0cb51a23528c482caed2ead54edafc305f0b9ee8b6bd579a266433e28e857d09a80d23e1ee55dadb773514c3c830f784738af31c5d200e7ce02c026d31bd4b6a8b00420627f3ea649ae451250d8dc9afa1f420640f24165a6cde33cb9402f58688b00").into(), - mix_digest: hex!("0000000000000000000000000000000000000000000000000000000000000000").into(), - nonce: hex!("0000000000000000").into(), - hash: hex!("ae86b11151a6e6bc2ee0b782bc806d02049f9c50c7187ab0e398b4faf504ba18"), - epoch: None - } -} - -fn header_31297209() -> ETHHeader { - //https://api.bscscan.com/api?module=proxy&action=eth_getBlockByNumber&tag=0x1dd8eb9&boolean=false - //https://bscscan.com/block/31297209 - ETHHeader { - parent_hash: hex!("77545edd1aa19c89e81b0a1360ab862aab49c6193a18a52ec22f5922c56a17b6").into(), - uncle_hash: hex!("1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347").into(), - coinbase: hex!("72b61c6014342d914470ec7ac2975be345796c2b").into(), - root: hex!("64b13ec7180a8d694195c275043ce997f75a544e0a19947beae10e6e994061c1"), - tx_hash: hex!("cc20a7302764361da8a1b5068c523de3f56be6c71d6f83cb27ba9c648029a6cf").into(), - receipt_hash: hex!("c6aa644b38dd0efd1238ff89a1f07dc346c4a231d5a8fe1df2eadb30ea1386d6").into(), - bloom: hex!("8aedd6798fb8f77c58254df5a5c035cb9246ca6b34b5d641e63251ebe88cb5d1badedf4fe8e1c9a9bf20ee3e65da52e0ef246de10628e671dfaee71295e622a254e3ea4b2f4c04c507f004d8da28042f21b67555c26d835ab68cd11995a532d94addecf6fa4f7245886d05ab6101e9aa7921b64ea0ef57a40d30acf7eb4f1e465cc9402f0c575b0f95f82454361f7b992bee9e97f96e82e82b2b20e83aca7de5862f9861fead7740edcd3fee5fce681e47a118f565a0795c7be6ed26e15e43da38775f4a7596196ef920a80a6172f2a2eb1f21d904f5ee170955548e0832e63d9279acfa822763113b197a576600cbf0c98c1cf9767c61f2ebaf9ed8985d799a").into(), - difficulty: 2, - number: u64::from_str_radix("1dd8eb9", 16).unwrap(), - gas_limit: u64::from_str_radix("84fe2c6", 16).unwrap(), - gas_used: u64::from_str_radix("d94391", 16).unwrap(), - timestamp: u64::from_str_radix("64eee0af", 16).unwrap(), - extra_data: hex!("d88301020a846765746888676f312e32302e35856c696e7578000000b19df4a2f8b5830aefffb86083d57dd73e56f4c2e0bff865baf921a537e93264fada64e29bb5a1d40bd30536aa019783c89a15462630cbfef1bad4ea083249423996a0214a1c982441f857c45cd3fc5c056d8404a317784274aa46b52187ecbe892cdd8f56bbceb2a0962faef84c8401dd8eb7a00d16a0ad7ea094c72adfd206bfc939627a0d254bed38ebb4ef940f3cb82a68b08401dd8eb8a077545edd1aa19c89e81b0a1360ab862aab49c6193a18a52ec22f5922c56a17b6802ac5addce6b711b4030e8e2a8c7cd96d5c750821a70fb38a69547718d1dfbaf770e51cce4dc3e090c45c2082d2d457e517fabcc180172276132f637597a0affc00").into(), - mix_digest: hex!("0000000000000000000000000000000000000000000000000000000000000000").into(), - nonce: hex!("0000000000000000").into(), - hash: hex!("cb51a23528c482caed2ead54edafc305f0b9ee8b6bd579a266433e28e857d09a"), - epoch: None - } -} - -fn header_31297208() -> ETHHeader { - //https://api.bscscan.com/api?module=proxy&action=eth_getBlockByNumber&tag=0x1dd8eb8&boolean=false - //https://bscscan.com/block/31297208 - ETHHeader { - parent_hash: hex!("0d16a0ad7ea094c72adfd206bfc939627a0d254bed38ebb4ef940f3cb82a68b0").into(), - uncle_hash: hex!("1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347").into(), - coinbase: hex!("70f657164e5b75689b64b7fd1fa275f334f28e18").into(), - root: hex!("7aa465914e03589dcd98842483bd1a94539fa2512f4c3d60d28f34c247a51010"), - tx_hash: hex!("050d6a35f73760b00e23acc15f81e59ba332afad6346454d86e45a18801fb9e2").into(), - receipt_hash: hex!("d0dbc4ad668f41a42680484f7dfe4c6a2426387a9288d15211e307bdc06c4042").into(), - bloom: hex!("85b697030202101080019845e620d0122020e60102a040b20538cf5105800012a9049801e0829014439463084218000d5112900c4612ad0004072002013009c20460901885000081099801891030807a6034020201580e06a00cb15880030ed5a44d34682b260028c22b101c618b0c403c0428408e0194043220a4398049168220ad138e0b121a20108035000818035de0263dcd386331e92500005c102ac824a70a4433da24e2012c03af0f9e466e00c5c885c0b2a00cc9200059e8404070c8f80c34264240082696c88cb04188b06eb0600020100020142f5042031882ea2c7510858003002310211da44291282320080c0e2a0ce03c60280cc82408688c02").into(), - difficulty: 2, - number: u64::from_str_radix("1dd8eb8", 16).unwrap(), - gas_limit: u64::from_str_radix("8583b00", 16).unwrap(), - gas_used: u64::from_str_radix("723c7f", 16).unwrap(), - timestamp: u64::from_str_radix("64eee0ac", 16).unwrap(), - extra_data: hex!("d88301020b846765746888676f312e31392e38856c696e7578000000b19df4a2f8b5830aefffb86081325d65523a881b1ca4bf500f9f030d2fcfa3fdb0e8a65fd8d5bad40a2f727de043a37875368cbd7e9e3573789b3fad0ea31c0f29521c4eef1a1bf63cfd4570b21493de83b47bbba1cb7b5eda6c120291a053a2463029fc8fe0fc55c798c638f84c8401dd8eb6a04edb537f71dc11604b10251c74ec65f9f5d8b7b49823a4e6b3fa635043ab066a8401dd8eb7a00d16a0ad7ea094c72adfd206bfc939627a0d254bed38ebb4ef940f3cb82a68b080faf6d5df96b30eb3f7670e25e8ca826f74d8ba9dcedbdcff2650478271b7cb1c35c7335fcfc5e3469a4e24204573d05bd5979c5d3371d762cd8951a06d31cf9601").into(), - mix_digest: hex!("0000000000000000000000000000000000000000000000000000000000000000").into(), - nonce: hex!("0000000000000000").into(), - hash: hex!("77545edd1aa19c89e81b0a1360ab862aab49c6193a18a52ec22f5922c56a17b6"), - epoch: None - } -}