fix(core): correctly deserialize eip1186 proof responses

This commit is contained in:
Georgios Konstantopoulos 2022-02-12 18:58:58 +02:00
parent c8d8b66d0a
commit d28e6959db
2 changed files with 41 additions and 0 deletions

View File

@ -9,6 +9,7 @@ pub struct StorageProof {
}
#[derive(Debug, Default, Clone, PartialEq, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct EIP1186ProofResponse {
address: Address,
balance: U256,
@ -18,3 +19,14 @@ pub struct EIP1186ProofResponse {
account_proof: Vec<Bytes>,
storage_proof: Vec<StorageProof>,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn can_deserialize_proof() {
serde_json::from_str::<EIP1186ProofResponse>(include_str!("../../testdata/proof.json"))
.unwrap();
}
}

29
ethers-core/testdata/proof.json vendored Normal file
View File

@ -0,0 +1,29 @@
{
"address": "0x7ae1d57b58fa6411f32948314badd83583ee0e8c",
"accountProof": [
"0xf90211a0f5f0fc4435d7d28ef25fdc46d7f84504474f96263c36379476ac6d209d7f7dd6a04f060c649eb912f7ede96ca232c87c0acf02e2dc80c0806427e20655b2906e99a0327a57686166773927604ddae15bb31ed0286a2539bf56fb0eec69dffa726123a058bec0e078cd8ba10b281e405dd940bdcd7b36753a14ee0e8f991501182d3b74a06aa7d258010b69fe48d966af25ec26a57d4a8324ce42c87fe402cc2f6716e54ba0fd1fa0d1e1e78f5314b6b7b1e9c1e007cb3d023234d548baf00528149c530638a05e642d9084d1ea11282050395cf7d82a09c4324bbc1f00c555c4a9e6e634c4cba0d570f24e17e3cf5f4a5a27bfa39f5f471ae5ff3a5f03ee50896d390882b54e90a02ae426a9259726af2befabeba92b04506c9964c8428393879d0e12b8c8503c8aa0139ec83890ab95a2514715a691bd46520969649efa6b8b7ddb7c3873ac8273eea0e0e879d951586a126e8272d84ecd356b2269cf22ed3f8904e5806ec157b2cb79a0995cd6e482065130366c0020c64133564b00bf3844935268836d55c74596520ea0a7ad33b003ff333acaffdab9190103f6b17d6df8c73650dcba83e0655d65ea2aa0143fe270c96ba9de62c6ec4ad59bed02bc0fdec37d80188aab56244a00b288f3a00d825cd07b3ed210d7fbf143ca25c2d90618d37b67f8a536039fb4b88573dd02a0c941e6c81045fd12d7d43aa90472f78c422af3e8465924e84df0e4e0dcd3bf4780",
"0xf90211a079a82b6696991b13a61ab127d4523ee51d6c88b7f67baa15b919888fd0743874a0e0c3ce98340b234c15d1d6a76ea265918fc282b8b9819dcbab4ee818db9bb015a0af0621f6341cd95597cfc52be4e0dfe3eb1c40ecfce5ac4ed981e874d2570a9da024c943c2d82fa83e9239209ae37abbb5b13aa5f8ef09f72eaea241a5d6424a90a0fad6914434628f110718ac7d7d6ce4112120e99b1aa4bb5f510e08502ac32af9a0b5951ac7f226a5436fa0b74f33c4ad242872f609dc73030b401080b0e4cc5a44a0b340c634bd307ddb4f99e34142b1fbecb08bd99f1154e707913a6ede40c44df2a05d1005b244d5bdeb657a27e37ee2ff2dc1bee9fc9dadad50a6a8f9501c83b496a01ab7e7ccb8c2993ce512e3f7a461fd48b4c62bcb0ce7c4fa40a248687defcd59a09937e967971e9cffa91a40eded9be942e0412b253e2f0fb5d7cacf25b63489d4a0be53036f7da95bab787e2f1c89abe4841ca6dc403157850da3f83f97ce9552b7a08d7e9e6503f429df4e1548d12298135d6ad07638265211df658d0d899553d1eca0f8105f035b8c3ffcfa057eb47df72c2072610ae4c3d525d0671b773d24602fa8a06f6b1c196163614e2fae2bc7333c2d11c34160575ba13a8f64bc2c4ebfe395a8a02a21453acdf51ca55d1c1dbf9c2568448498736852f89fbbc039c180ae27ff24a00cf5ea162fa3b0456349a7d6ca441a81951918b31d5f080412e6431e6918495880",
"0xf90211a00f76fc33e956622fd1fc755eb873656ba95f726e66c1787e2267b31cc5bbd985a0fc8e5340344c10ca160906740cb0c4b4ea35f4c38130522f31dd66df79f0ad33a04ce755b44e7dfabb0fc7e23c884547075b2762ab3ec57d980f20754cc3dbc0b5a02a7e16917f7e51585b2cfc6a80dcc01036808dbaa14e5be3a3d5c134320e416ba0d648ef21330219ea856ecd9bd9a340bb6dbabd739a3c4f105e31b75183682bd9a0f92b3ad626495fb5278abba274677b5fba6e4f1d5cbf9c54521eb8b5ad5ffd30a04ddd49d6fe0a02bb83956a733437bb55c32c328c3fa778fd6d18e31853fd84bea0b89536a39637ff432e44184f756986495db413d66be496dd16dfc28c4a578735a0838826ea67312fc2bdc845ead924567aeb50a0f31919778300a1a2059ccc1c50a0e2c5c11f7b20bef6921ddde677ce58c3e679ce0a333d5b85622122c2fa9ce9efa0b5dfcca5631b1647e76437ab29ae262572fb291a186e47c056af5d8bd036add5a0e745abaa72b0d9475228000d89e74e529f3163b6cceb14150c3626977ce64729a070d94864f49bf3f5fb032d134340e6db39a2876587ca4b5e4241cb32df5df7f9a0a68c086d773a76f34b9bbdd08d80821f3a0074068041d0459394b54b523d680fa023bc5f7917a06e1a0f94596b82a564860617868f65f7e22ca566f33f26abcd5da0b7da3fd1cd32bfb2bb70de85ffed2963332e3aca068b84ca0fcd4964bbec8bff80",
"0xf90211a0b3571d33c9849a8a017ed8fb486804706bbe8c795aff37df2a92a9dbd94d9c92a0622e60877c5b303eb50646dadc1dafadf9b523081fe30a50fcbaab7f5540e8d7a0f2e1376ac90b852e021c79aea8f3e235e0d0a5a02d80244b384deb460de3dd18a03e8e7eecd7ec987487305831a9476050539cc9eedb2cdf24ffcf674237faf77ca0d94cc8a9059c99d9f408800c218ae9d47680618ca2f47b396a13752704f3e554a0d76e79a852761a285d5da6a7b88a714706c73ca21760bf04db3e66cc292af90ea08cbadba557c74bdf46e47bbe8b8f5877484b6a83586f304ce6735d66fc238418a037b7adfb405a40a4a1a062fe486e0fe6f9c385b777191c24c53a2e1245a6a2e3a0e0db07f82a97ee038ae756e5c7003b7484f05b4ecf329dd011e0f23b9906e554a097c10736f0ab6a624b7e307912cedbc378c393a77fda46699a41aa37e996ea8aa03421ac703b162881e21ce111a2824c2b68f9e334334a1aa11094820da41ac2dfa08211fa3ef76e077bf4e8b7936983d3cc9bbd4533d29bc27516bc9c7123a965d6a0ba8c0be28246d36e563731039e57711b204f008daf0272479e55fb1dadf34202a004de9138b9911cbc95d1017bc253ab816963dd354aa8ae6a127e2d89f7f86161a08920b6f94ae6e9cbaa29ee5f8ca52cf6962f89f9fefd7386b6663711ff7b5d69a01f38cbc784d3b9d3eeaffa7d8e42c6cc94ce79c7bb12f827782b5f64a1a6a93d80",
"0xf90211a034a2552054411dc664ef8e597cc2b7b1f0974cf62d40193d8e5f35013e612c1ba0b0fe062fb1ad401668f135654921ff6542dd00b18e152ee3fcf57d776fe2c179a00669f4d3374106b875b9800580995a18de66cda98e95fb07e1e79f35b52abb34a0b59dd059c974bd8ac3a98409c7f9c0d5a54827d1fe2e20b6d1cb0f8ce311bebca073c0e972ee0ca8a2985198158ec115008061076c6618c131ad8fa79eafeb7c32a0c68741d417a821daa549ad3b2a605cd78d43f62b8220c1d79da056f85dcb9bfda07f2a02d7bd6669fc512e05033cfbd56be68c517ae415d0f9ae3190797c0e81c5a096a00b2ddeda48df3ef0b88738c14caccc6eb4d072c11d98e0e7222811f8a4e7a06f7ae0647462143a3205a6e0b2167d15745f9febc28941b98e0e9b2120313eaaa07f4ebb1f1ceb49405904de266c8f521b91ad2982febe023a0ff6824355d4f9d8a0f8ab56eb1e5d8b1c4628d6749fe8f680043d074a62ce415528139b93c399f357a0d11f90835323d8f0339bb03692e1c69551ec37e15cb49ddb6c176c07d308b9c8a079d1ca600945c11077fb25bd68440345819ee1fb63ce60754ab23a1dab4ca23aa08a7c385645d96f62f8e60bf66521bd745c20d44c7b2da901388997fb2934d26da0787ca5c9f3fb27e5f82c0bb0c6a8ccba62202ab0cb5160fc087e5f8648835e80a01e12586d6c58962ef1b1f634e5ab8ea559442383a79f9170273d975e17d53bea80",
"0xf90211a083eee2cc3aaa0de966ed9448a80d32f1c150d0be5f5665845927bf88c0097c52a0549e70926e435d33f2a16b5c13db33185187809d542bf9f6c48963410780b80aa0fad5f4c4e918284d54aedae7101e511e6957ff0ea57004507e3ccc2b7b8fe147a0a8373ad1441bb75727dc34f4eb43f8b4de2d17e5065874624d8b378a25745d2fa05295d90b2749aa759b7d573824fe86199ceaebc57fa98c57d9b3c12606226f1ea0727cedf499df4c1162534a12317279b2d8f6f48541549481bcf0ba7cc24e7d55a0030a8f35c8683b9d45416ec4996c700bdb1577d18f9990d1a4a6bc9e4f3bcee5a0575b5d3bc59e476fd3794856d9938344399b0ceb7526291b6cd44aaaa7d6a902a0ec2ce6eb12fbc3218d01cb20fa03a9cd30f10fd46379fd3271980501f62e06e5a045d1db58b141321600837901cc09f356713c71c0b9def24698e8a78b13889488a0d44a51694b70df547bcfbd0363068bc908fc3a32663e268011607d0631e0a32ba07c69374023e1ea2728c7130c0ee2dcc462e0ab53a7d122c286f5c3a480ae395fa0fee728d489e337c36af5bb40887c9747a096eb87cea1233007b28bbe2367622fa09e6f561888dfdb234a0268bf8dae457b1c1a6ec90ca06c314c72ed043a75bcc0a0aa3a0cc29b027a19e5eb8c0361387d30af96dd84d7a9c64064f077e925f6b389a0c31765f105fca312ff576214f30a5654cc7c4fc4522e3b37b35494fb00e1d95580",
"0xf90151a0bf5e7a6355d2aae16870034397bcb78fb7f3677302857c4e3f0f11b2ad183ddaa0441a130e5b3344a0c6d4e01e69cdd8c3d54c9427c22df1c21e823bd5238bcedc80a0de4a8735f0afe745a73341f09b2641b136c4c6ceb33a4c04f868b8c0ae0c572da0616b1953ab56f21db0e3e0a8f04422bbdce75bd530e049560426deb7548c9324a0df7498a408a3cb6f416a60eb97bc61cdd31f9f9c1e3d9f2e131c476cca1a64aaa0b4b838d595815f1af27bc520f9054bbe7b8f1ae901d58ceba455a93a02b38fe3a088c2648a34b76ec09c67666bf1b2ff917c97a960dbebd2c8d56ec2b89c5f5d7ba080f002d80dc9f4e682660964f02c4f70fdfb5aeeee5f5651fca75c06f810c37980a0f6d68b8a203434af63aefd6acbce4e627b80e03c11d9c64334d48655f842ee24a02991191455c868799650d6cd4009a21443c9ac2aebedb76d55d9a01811d59a9c8080808080",
"0xf8669d33269ec9b8f075a4723d27c611ac1c52a464f3516b25e0105a0d1c2210b846f8440180a03836d7e3afb674e5180b7564e096f6f3e30308878a443fe59012ced093544b7fa02cfdfbdd943ec0153ed07b97f03eb765dc11cc79c6f750effcc2d126f93c4b31"
],
"balance": "0x0",
"codeHash": "0x2cfdfbdd943ec0153ed07b97f03eb765dc11cc79c6f750effcc2d126f93c4b31",
"nonce": "0x1",
"storageHash": "0x3836d7e3afb674e5180b7564e096f6f3e30308878a443fe59012ced093544b7f",
"storageProof": [
{
"key": "0x0000000000000000000000000000000000000000000000000000000000000000",
"value": "0x0",
"proof": [
"0xf90211a0d24e9242c2ef8b8a5c74b22915b80db1d6febd83c1399af920e73a3a3e6f5359a0d8beb5d8687b39d32148247dfcfbcda4bf1507de6bd9025417aa97b90283bbfba025cbad12ebebe6d79041b8953dcb9088558deff7ebc5140a1180ead12a181151a0f4168b84a0e5e7aec2c26cbbf91aea09404ae63444455b0626a8ca3fea498c08a0f2eadf4864a004cedfd1452c00e65dc8aceeb60517ae9a9161e4ba3d9c2ae179a0e466381320d7f1943a0f92ae3149c54488771a3deddc1ef21f88673a96caa41da0f7807e5c7a5cd50ac11c9d63b326f728e7c7779332b4c288f1886c2c32fce2f4a02b6bffd177a66f7be5db11253a9cd990b8e7bcc6f615d1f2721ecae417194354a03b72c03fd3bc8dc71b7ea901ebb667679efe300989a3a7d8e480926814d1f8b3a00dc01b0aa64272858833a060a11c9cc385f845db10c9869cdb9ac399edc13604a084adcb82e3466c9070e93de7f1112f2b454235e46bba3757a827aeb141ac5ceea0e1ee371cb987eec41ffcc11a3d78cce4a3db934365ff9385cb6d41fc828fcbe7a04a9f0723b676f36ce1ca7c96440640e2521ddb1d408af9e0e40196246e86bdb4a0f8d5b3099b7800c8a8abd073675cc94fe913cf4b7af3d3736b40a99d16a5a26ba01dec8ffccb928fecb7654c9493a854f15d87a5d76d46f28dc98a176bf9b75eb2a09024c7e1e47678b91b8f1b88fa3195c903e852fd3771dc3a43d2a407f6a03e5680",
"0xf90211a003ce494fb4c43f4bfbed16a2b55fe0db8f01e3bbfc39f479f035846749c89b62a099c49a7bd65ba7cdcaf7c1de712cda41b518b5418f690af1e191161e966d8a45a099e3683f6c1f344c3233804f479228c0eade51feac55f42dbd1b99774135ed0da0ab357eeee2e0ad78880a51db599c3f8428deb6ada8213a4b8245c27f99605451a07627f39a4627e0d9c3f5cc7f36752b11e5b1b818375fe470142f0c665a80e07ca0d6f082034fef118757fb2a4bec21f1b338119d827deb869369651a5484049feba0005c4014d4bdc60e62537fc57df020239db798e6319e9b659a47f11f68934052a0078e8847f104b0e911d24d955a539603c4293f43f929ee4e1ba528c2d0401384a0becfc0b36b3e583f698fb01151e753a23964c120f37982ee32fade0278bc70f5a056df0ee78f0773bdcc17cd40154f6d489e8015e956f50b64c8acddc61e7bb68ba0e66031bdc7fec2efae7165fd81adcc6738868d197d34174c629437554aad02e6a0495467963f9bec77aab577ba575c2fd8a12d2097549c13b22aa13ce3b710d900a0826dae7bcdc5517c1a99fec02fb0e01163e95c0504f1028551ab0c4367892871a0d8625ca51acff9b30970aebab9585e10794f470b05463b621d8520349f99693ea0de8cae4fe9fcd780ecd9c58946923357678ddcebe7dc8493f38dd28f18c4307ca09b6aaa66550685763e9ce4e8d8e3fd42a85e3a7fae094738c969ba0e5899fb9380",
"0xf90211a02f735a1444035c376b883498ed8cb6904fa2dd0a030f134d5a0df3d8eaca9623a07b63f0c18a46e3e5fec248bdbc861b4651df4aa821c6735f778f28eb997ad851a026c6d7a14629f89cbe9532f31aabfe2fb12fb739dc8cdfb60b5855c312ddce96a0a25dcfa9f3e6736b35ea14ff51b63656a15e1785c53c28f0b82309839ca838a8a03de0fe33add7f57ac122d28470f48d6ebb61a351a37ee5fca40ca923335a603aa0ad7273bd535661496207181ff58e7f44adbfbc062fc03d85da0bd2bffacb03c4a0d4e09a5170239e48be3140d4a4fa33e7d55ea0361a4e3a135b2d9edf45075d06a0ccb26df003eb092dee9b77909f815407abdbd3f5c3c6a5b968addb729a2b29fba0aa6f915141fd795671ce8485027faccc81c0a9148f6806409ec1c636dd8b3302a0aaa6a639c30e53435d1fce25a3564bde89409cbcc12cffb090c167e88616a8f6a0ef6f1981e9786e96ec578a42646c04cc631ae848b6315c1271e7b4921a09b4a3a0705f0745083c9f87c3c9c23877e01efaf787e078f802a95b3dbe860d673174bfa0b5d83b6aab765759c1b39c85ff2ee0eb4779264d42b7c9fc0847995e8ec37ed3a0d3d833c4d5ab4d1d8832c88427f4940fbe6fddad6f0dc478a8df52212804f5ffa0f694df9afb92fe0c360c0d1d765743a249fec5858ce7253e526b0db9c4b4d20ca09755ac002364839992a491d6a24826dc4a2feb8eb5737763f0ed544f19dfa3ed80",
"0xf871a0e4050339952e88a1d403d7078148abf3af96d8a2fdb175cf12244b721962fe4280808080808080a0cd71d6a12adb2cef5dba915f9cd9490173c5db30ea44a1aee026d8e0ea2fd27f80a059267a0b25d180d3cae2274c50da7b7da0ddddfd435671181e9dc2f7ba8cca7f808080808080"
]
}
]
}