From bdd7303c91c561872f21e5c937c2676ac63722a6 Mon Sep 17 00:00:00 2001 From: ChenYe Date: Fri, 4 Oct 2024 07:52:21 +0000 Subject: [PATCH] add test example for scroll --- Cargo.lock | 279 +++++++++++++++++++------------------ README.md | 27 +++- bin/sgx-prover/Cargo.toml | 1 + bin/sgx-prover/src/main.rs | 2 +- crates/prover/src/api.rs | 27 ++-- crates/prover/src/types.rs | 2 +- testdata/test_scroll.sh | 1 + 7 files changed, 192 insertions(+), 147 deletions(-) create mode 100755 testdata/test_scroll.sh diff --git a/Cargo.lock b/Cargo.lock index cff7f6f..4cbed70 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,18 +4,18 @@ version = 3 [[package]] name = "addr2line" -version = "0.24.1" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375" +checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" dependencies = [ "gimli", ] [[package]] -name = "adler2" -version = "2.0.0" +name = "adler" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "adler32" @@ -96,9 +96,9 @@ dependencies = [ [[package]] name = "alloy-chains" -version = "0.1.31" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b68b94c159bcc2ca5f758b8663d7b00fc7c5e40569984595ddf2221b0f7f7f6e" +checksum = "bb07629a5d0645d29f68d2fb6f4d0cf15c89ec0965be915f303967180929743f" dependencies = [ "num_enum 0.7.3", "strum 0.26.3", @@ -307,7 +307,7 @@ checksum = "4d0f2d905ebd295e7effec65e5f6868d153936130ae718352771de3e7d03c75c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.76", ] [[package]] @@ -413,7 +413,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.76", ] [[package]] @@ -425,11 +425,11 @@ dependencies = [ "alloy-sol-macro-input", "const-hex", "heck 0.5.0", - "indexmap 2.5.0", + "indexmap 2.4.0", "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.76", "syn-solidity", "tiny-keccak", ] @@ -445,7 +445,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.76", "syn-solidity", ] @@ -571,9 +571,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.88" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e1496f8fb1fbf272686b8d37f523dab3e4a7443300055e74cdaa449f3114356" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" [[package]] name = "ark-ff" @@ -724,18 +724,18 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.76", ] [[package]] name = "async-trait" -version = "0.1.82" +version = "0.1.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" +checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.76", ] [[package]] @@ -762,7 +762,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.76", ] [[package]] @@ -774,7 +774,7 @@ checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "automata-build-script" version = "0.1.0" -source = "git+https://github.com/automata-network/automata-sgx-sdk#45f9b400bca71a839dd0fa3b856251444c93747f" +source = "git+https://github.com/automata-network/automata-sgx-sdk#86a40e22744d83cc42d306a8e886137440eb409c" dependencies = [ "cc", "serde", @@ -785,9 +785,10 @@ dependencies = [ [[package]] name = "automata-sgx-sdk" version = "0.1.0" -source = "git+https://github.com/automata-network/automata-sgx-sdk#45f9b400bca71a839dd0fa3b856251444c93747f" +source = "git+https://github.com/automata-network/automata-sgx-sdk#86a40e22744d83cc42d306a8e886137440eb409c" dependencies = [ "automata-sgx-sdk-sysroot", + "base 1.0.0", "cc", "ctor", "serde", @@ -801,21 +802,21 @@ dependencies = [ [[package]] name = "automata-sgx-sdk-sysroot" version = "0.1.0" -source = "git+https://github.com/automata-network/automata-sgx-sdk#45f9b400bca71a839dd0fa3b856251444c93747f" +source = "git+https://github.com/automata-network/automata-sgx-sdk#86a40e22744d83cc42d306a8e886137440eb409c" [[package]] name = "backtrace" -version = "0.3.74" +version = "0.3.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" dependencies = [ "addr2line", + "cc", "cfg-if", "libc", "miniz_oxide", "object", "rustc-demangle", - "windows-targets", ] [[package]] @@ -833,6 +834,15 @@ dependencies = [ "tokio", ] +[[package]] +name = "base" +version = "1.0.0" +source = "git+https://github.com/automata-network/base-rs#42b6607918d20d4fa5b2b4ea1309792607a4f88e" +dependencies = [ + "chrono", + "tokio", +] + [[package]] name = "base16ct" version = "0.2.0" @@ -897,7 +907,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.77", + "syn 2.0.76", "which", ] @@ -963,7 +973,7 @@ dependencies = [ [[package]] name = "bn254" version = "0.1.0" -source = "git+https://github.com/scroll-tech/bn254#c9f170c6e39cfbc1ff14b9648f125823978041b3" +source = "git+https://github.com/scroll-tech/bn254#1773ed6c51f14652272056370cf135ff5d7a01c5" dependencies = [ "ff", "getrandom", @@ -1048,9 +1058,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.18" +version = "1.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476" +checksum = "57b6a275aa2903740dc87da01c62040406b8812552e97129a63ea8850a17c6e6" dependencies = [ "jobserver", "libc", @@ -1116,9 +1126,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.17" +version = "4.5.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e5a21b8495e732f1b3c364c9949b201ca7bae518c502c80256c96ad79eaf6ac" +checksum = "ed6719fffa43d0d87e5fd8caeab59be1554fb028cd30edc88fc4369b17971019" dependencies = [ "clap_builder", "clap_derive", @@ -1126,9 +1136,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.17" +version = "4.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cf2dd12af7a047ad9d6da2b6b249759a22a7abc0f474c1dae1777afa4b21a73" +checksum = "216aec2b177652e3846684cbfe25c9964d18ec45234f0f5da5157b207ed1aab6" dependencies = [ "anstream", "anstyle", @@ -1145,7 +1155,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.76", ] [[package]] @@ -1159,7 +1169,7 @@ name = "clients" version = "0.4.6" dependencies = [ "alloy", - "base", + "base 0.4.6", "url", ] @@ -1283,9 +1293,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.14" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "51e852e6dc9a5bed1fae92dd2375037bf2b768725bf3be87811edee3249d09ad" dependencies = [ "libc", ] @@ -1334,7 +1344,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f" dependencies = [ "quote", - "syn 2.0.77", + "syn 2.0.76", ] [[package]] @@ -1367,7 +1377,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.77", + "syn 2.0.76", ] [[package]] @@ -1378,7 +1388,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.77", + "syn 2.0.76", ] [[package]] @@ -1441,7 +1451,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version 0.4.1", - "syn 2.0.77", + "syn 2.0.76", ] [[package]] @@ -1519,7 +1529,7 @@ dependencies = [ [[package]] name = "encoder" version = "0.1.0" -source = "git+https://github.com/scroll-tech/da-codec#41c6486469676eb88af1131c65dbbd73751458bb" +source = "git+https://github.com/scroll-tech/da-codec#9e32313056ac5535b9024ed2db97db73cba3bbc3" dependencies = [ "zstd", ] @@ -1532,7 +1542,7 @@ checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.76", ] [[package]] @@ -1871,7 +1881,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.76", ] [[package]] @@ -1944,9 +1954,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.31.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" +checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" [[package]] name = "glob" @@ -2031,7 +2041,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.1.0", - "indexmap 2.5.0", + "indexmap 2.4.0", "slab", "tokio", "tokio-util", @@ -2194,9 +2204,9 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.3" +version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" +checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" dependencies = [ "futures-util", "http 1.1.0", @@ -2213,9 +2223,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.8" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da62f120a8a37763efb0cf8fdf264b884c7b8b9ac8660b900c8661030c00e6ba" +checksum = "cde7055719c54e36e95e8719f95883f22072a48ede39db7fc17a4e1d5281e9b9" dependencies = [ "bytes", "futures-channel", @@ -2329,9 +2339,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.5.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" +checksum = "93ead53efc7ea8ed3cfb0c79fc8023fbb782a5432b52830b6518941cebe6505c" dependencies = [ "equivalent", "hashbrown 0.14.5", @@ -2349,9 +2359,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.10.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" [[package]] name = "is_terminal_polyfill" @@ -2532,7 +2542,7 @@ dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.76", ] [[package]] @@ -2624,9 +2634,9 @@ dependencies = [ [[package]] name = "keccak-asm" -version = "0.1.4" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "505d1856a39b200489082f90d897c3f07c455563880bc5952e38eabf731c83b6" +checksum = "422fbc7ff2f2f5bdffeb07718e5a5324dca72b0c9293d50df4026652385e3314" dependencies = [ "digest 0.10.7", "sha3-asm", @@ -2698,7 +2708,7 @@ name = "linea-executor" version = "0.4.6" dependencies = [ "alloy", - "base", + "base 0.4.6", "linea-zktrie", "log", "revm 13.0.0 (git+https://github.com/automata-network/linea-revm?branch=linea-revm/v41)", @@ -2733,7 +2743,7 @@ name = "linea-test" version = "0.4.6" dependencies = [ "alloy", - "base", + "base 0.4.6", "clap", "clients", "linea-shomei", @@ -2749,7 +2759,7 @@ name = "linea-verifier" version = "0.4.6" dependencies = [ "alloy", - "base", + "base 0.4.6", "clients", "linea-executor", "linea-mimc", @@ -2769,7 +2779,7 @@ version = "0.4.6" dependencies = [ "alloy", "alloy-rlp", - "base", + "base 0.4.6", "lazy_static", "linea-mimc", "log", @@ -2828,11 +2838,11 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.8.0" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" dependencies = [ - "adler2", + "adler", ] [[package]] @@ -2998,7 +3008,7 @@ dependencies = [ "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.76", ] [[package]] @@ -3009,7 +3019,7 @@ checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.76", ] [[package]] @@ -3023,9 +3033,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.20.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ea5043e58958ee56f3e15a90aee535795cd7dfd319846288d93c5b57d85cbe" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "open-fastrlp" @@ -3146,9 +3156,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.12" +version = "2.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c73c26c01b8c87956cea613c907c9d6ecffd8d18a2a5908e5de0adfaa185cea" +checksum = "cd53dff83f26735fdc1ca837098ccf133605d794cdae66acfc2bfac3ec809d95" dependencies = [ "memchr", "thiserror", @@ -3172,7 +3182,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.76", ] [[package]] @@ -3206,7 +3216,7 @@ checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "poseidon-bn254" version = "0.1.0" -source = "git+https://github.com/scroll-tech/poseidon-bn254?branch=master#526a64a81419bcab6bd8280a8a3f9808189e0373" +source = "git+https://github.com/scroll-tech/poseidon-bn254?branch=master#a1174dac3d854bd91556b54274551326a94b11e6" dependencies = [ "bn254", "itertools 0.13.0", @@ -3234,7 +3244,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" dependencies = [ "proc-macro2", - "syn 2.0.77", + "syn 2.0.76", ] [[package]] @@ -3338,7 +3348,7 @@ dependencies = [ "alloy", "async-trait", "automata-sgx-sdk", - "base", + "base 0.4.6", "clap", "clients", "env_logger", @@ -3362,7 +3372,7 @@ name = "prover-types" version = "0.4.6" dependencies = [ "alloy", - "base", + "base 0.4.6", "libflate", "serde", "serde_json", @@ -3396,9 +3406,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quinn" -version = "0.11.5" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684" +checksum = "b22d8e7369034b9a7132bc2008cac12f2013c8132b45e0554e6e20e2617f2156" dependencies = [ "bytes", "pin-project-lite", @@ -3414,9 +3424,9 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.8" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fadfaed2cd7f389d0161bb73eeb07b7b78f8691047a6f3e73caaeae55310a4a6" +checksum = "ba92fb39ec7ad06ca2582c0ca834dfeadcaf06ddfc8e635c80aa7e1c05315fdd" dependencies = [ "bytes", "rand 0.8.5", @@ -3431,15 +3441,15 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.5" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fe68c2e9e1a1234e218683dbdf9f9dfcb094113c5ac2b938dfcb9bab4c4140b" +checksum = "8bffec3605b73c6f1754535084a85229fa8a30f86014e6c81aeec4abb68b0285" dependencies = [ "libc", "once_cell", "socket2", "tracing", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -3535,9 +3545,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.4" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0884ad60e090bf1345b93da0a5de8923c93884cd03f40dfcfddd3b4bee661853" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" dependencies = [ "bitflags 2.6.0", ] @@ -3945,9 +3955,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.37" +version = "0.38.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +checksum = "a85d50532239da68e9addb745ba38ff4612a242c1c7ceea689c4bc7c2f43c36f" dependencies = [ "bitflags 2.6.0", "errno", @@ -3958,9 +3968,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.13" +version = "0.23.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2dabaac7466917e566adb06783a81ca48944c6898a1b08b9374106dd671f4c8" +checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" dependencies = [ "log", "once_cell", @@ -4029,9 +4039,9 @@ checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" [[package]] name = "rustls-webpki" -version = "0.102.8" +version = "0.102.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +checksum = "84678086bd54edf2b415183ed7a94d0efb049f1b646a33e22a36f3794be6ae56" dependencies = [ "ring", "rustls-pki-types", @@ -4106,11 +4116,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.24" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -4123,7 +4133,7 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" name = "scroll-executor" version = "0.4.6" dependencies = [ - "base", + "base 0.4.6", "eth-types", "mpt-zktrie", "revm 13.0.0 (git+https://github.com/automata-network/scroll-revm?branch=scroll-evm-executor/v41)", @@ -4135,7 +4145,7 @@ dependencies = [ name = "scroll-test" version = "0.4.6" dependencies = [ - "base", + "base 0.4.6", "clap", "clients", "env_logger", @@ -4153,7 +4163,7 @@ name = "scroll-verifier" version = "0.4.6" dependencies = [ "alloy", - "base", + "base 0.4.6", "blst", "c-kzg", "clients", @@ -4172,7 +4182,7 @@ dependencies = [ [[package]] name = "scroll-zstd" version = "0.1.0" -source = "git+https://github.com/scroll-tech/da-codec#41c6486469676eb88af1131c65dbbd73751458bb" +source = "git+https://github.com/scroll-tech/da-codec#9e32313056ac5535b9024ed2db97db73cba3bbc3" dependencies = [ "encoder", ] @@ -4222,9 +4232,9 @@ dependencies = [ [[package]] name = "secp256k1-sys" -version = "0.10.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" +checksum = "1433bd67156263443f14d603720b082dd3121779323fce20cba2aa07b874bc1b" dependencies = [ "cc", ] @@ -4300,16 +4310,16 @@ checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.76", ] [[package]] name = "serde_json" -version = "1.0.128" +version = "1.0.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +checksum = "8043c06d9f82bd7271361ed64f415fe5e12a77fdb52e573e7f06a516dea329ad" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.4.0", "itoa", "memchr", "ryu", @@ -4347,7 +4357,7 @@ dependencies = [ "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.5.0", + "indexmap 2.4.0", "serde", "serde_derive", "serde_json", @@ -4364,13 +4374,13 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.76", ] [[package]] name = "sgx-dcap-ql-rs" version = "0.1.0" -source = "git+https://github.com/automata-network/SGXDataCenterAttestationPrimitives.git?branch=automata_sgx_builder#5df45d6f5acacd2332246c08b93cdb203d69d960" +source = "git+https://github.com/automata-network/SGXDataCenterAttestationPrimitives.git?branch=automata_sgx_builder#9bf847fe5479995acf6cfb612c016fac3078745b" dependencies = [ "sgx-dcap-ql-sys", ] @@ -4378,7 +4388,7 @@ dependencies = [ [[package]] name = "sgx-dcap-ql-sys" version = "0.1.0" -source = "git+https://github.com/automata-network/SGXDataCenterAttestationPrimitives.git?branch=automata_sgx_builder#5df45d6f5acacd2332246c08b93cdb203d69d960" +source = "git+https://github.com/automata-network/SGXDataCenterAttestationPrimitives.git?branch=automata_sgx_builder#9bf847fe5479995acf6cfb612c016fac3078745b" dependencies = [ "bindgen", ] @@ -4535,9 +4545,9 @@ dependencies = [ [[package]] name = "sha3-asm" -version = "0.1.4" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46" +checksum = "57d79b758b7cb2085612b11a235055e485605a5103faccdd633f35bd7aee69dd" dependencies = [ "cc", "cfg-if", @@ -4690,7 +4700,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.77", + "syn 2.0.76", ] [[package]] @@ -4703,7 +4713,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.77", + "syn 2.0.76", ] [[package]] @@ -4738,9 +4748,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.77" +version = "2.0.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" +checksum = "578e081a14e0cefc3279b0472138c513f37b41a08d5a3cca9b6e4e8ceb6cd525" dependencies = [ "proc-macro2", "quote", @@ -4756,7 +4766,7 @@ dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.76", ] [[package]] @@ -4804,7 +4814,7 @@ checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.76", ] [[package]] @@ -4897,7 +4907,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.76", ] [[package]] @@ -4913,9 +4923,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.16" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" +checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" dependencies = [ "futures-core", "pin-project-lite", @@ -4925,9 +4935,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.12" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" dependencies = [ "bytes", "futures-core", @@ -4964,7 +4974,7 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.4.0", "toml_datetime", "winnow 0.5.40", ] @@ -4975,7 +4985,7 @@ version = "0.22.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.4.0", "serde", "serde_spanned", "toml_datetime", @@ -5030,7 +5040,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.76", ] [[package]] @@ -5086,9 +5096,9 @@ checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" -version = "1.0.13" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" @@ -5212,7 +5222,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.76", "wasm-bindgen-shared", ] @@ -5246,7 +5256,7 @@ checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.76", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -5269,9 +5279,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.5" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bd24728e5af82c6c4ec1b66ac4844bdf8156257fccda846ec58b42cd0cdbe6a" +checksum = "bd7c23921eeb1713a4e851530e9b9756e4fb0e89978582942612524cf09f01cd" dependencies = [ "rustls-pki-types", ] @@ -5485,7 +5495,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.76", ] [[package]] @@ -5505,13 +5515,13 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.76", ] [[package]] name = "zktrie" version = "0.3.0" -source = "git+https://github.com/scroll-tech/zktrie.git?branch=main#bd52e599148cb6634d8a994fa875f6d2ba03ea45" +source = "git+https://github.com/scroll-tech/zktrie.git?branch=main#460b8c22af65b7809164548cba1e0253b6db5a70" dependencies = [ "gobuild", "zktrie_rust", @@ -5520,11 +5530,10 @@ dependencies = [ [[package]] name = "zktrie_rust" version = "0.3.0" -source = "git+https://github.com/scroll-tech/zktrie.git?branch=main#bd52e599148cb6634d8a994fa875f6d2ba03ea45" +source = "git+https://github.com/scroll-tech/zktrie.git?branch=main#460b8c22af65b7809164548cba1e0253b6db5a70" dependencies = [ "hex", "lazy_static", - "log", "num", "num-derive", "num-traits", diff --git a/README.md b/README.md index 9f1bdd2..e1a696e 100644 --- a/README.md +++ b/README.md @@ -35,5 +35,30 @@ $ ls -l target/release/sgx-prover target/release/*.signed.so SGX Prover supports running on non-SGX VM, even on macos. In this case, the Intel SGX SDK is not required. ``` -$ cargo sgx run --std +$ cargo sgx run --std +``` + +# Run + +Prepare the Config +``` +$ cat ./config/prover.json +{ + "scroll_endpoint": "${scroll_node_endpoint}" +} +``` + +Run the server +``` +# run by cargo sgx +$ cargo sgx run --release + +# run by executable file +$ target/release/sgx-prover +``` + +Test the functionality with scroll +``` +$ testdata/test_scroll.sh +{"jsonrpc":"2.0","result":{"not_ready":false,"batch_id":326800,"start_block":9850414,"end_block":9850527,"poe":{"batch_hash":"0x9fc92b2699dcd97f0f22d81e13d316d76751de67bfbc3c6afd023b05ca930f37","state_hash":"0xc0eff2fa84b7e0591d49994fed63d0ca9e69f77f9658caec93c7f452a18c0808","prev_state_root":"0x02b0659557cbef26689ca30067bd17658b55db5555aeffeb60025ede53e7fefb","new_state_root":"0x15277dcb70eabc3703a816f470f9b9f05aa4272d232ca6c7ced84d4874f5bb0e","withdrawal_root":"0x0aaa5af01432a5037adc40237e9f88c1059de1c207fe1b5287a595cd94c729d3","signature":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}},"id":1} ``` \ No newline at end of file diff --git a/bin/sgx-prover/Cargo.toml b/bin/sgx-prover/Cargo.toml index c923169..76fb595 100644 --- a/bin/sgx-prover/Cargo.toml +++ b/bin/sgx-prover/Cargo.toml @@ -2,6 +2,7 @@ name = "sgx-prover" version.workspace = true edition.workspace = true +default-run = "sgx-prover" [features] tstd_app = ["automata-sgx-sdk/tstd_app"] diff --git a/bin/sgx-prover/src/main.rs b/bin/sgx-prover/src/main.rs index bf07d06..8905e0c 100644 --- a/bin/sgx-prover/src/main.rs +++ b/bin/sgx-prover/src/main.rs @@ -8,6 +8,6 @@ automata_sgx_sdk::enclave! { } fn main() { - let result = Prover::new(true).unwrap().run_prover().unwrap(); + let result = Prover::new().run_prover().unwrap(); assert!(result.is_success()); } diff --git a/crates/prover/src/api.rs b/crates/prover/src/api.rs index 43ebea3..0bd047a 100644 --- a/crates/prover/src/api.rs +++ b/crates/prover/src/api.rs @@ -79,14 +79,14 @@ impl ProverV1ApiServer for ProverApi { match result { Ok(quote) => Ok(quote.into()), Err(err) => { - let msg = format!("generate report failed: {}", err); + let msg = format!("generate report failed: {:?}", err); return Err(self.err(14003, msg)); } } } async fn get_poe(&self, tx_hash: B256) -> RpcResult { - self.prove_task_with_sample(tx_hash, self.sampling, TaskType::Scroll.u64()) + self.prove_task_with_sample(tx_hash, None, self.sampling, TaskType::Scroll.u64()) .await } } @@ -139,8 +139,8 @@ impl ProverV2ApiServer for ProverApi { }) } - async fn prove_task_without_context(&self, tx_hash: B256, ty: u64) -> RpcResult { - self.prove_task_with_sample(tx_hash, 0, ty).await + async fn prove_task_without_context(&self, task_data: Bytes, ty: u64) -> RpcResult { + self.prove_task_with_sample(B256::default(), Some(task_data), 0, ty).await } async fn generate_context( @@ -232,6 +232,7 @@ impl ProverApi { async fn prove_task_with_sample( &self, tx_hash: B256, + task_data: Option, sampling: u64, ty: u64, ) -> RpcResult { @@ -239,12 +240,20 @@ impl ProverApi { if ty != TaskType::Scroll { return Err(self.err(14010, format!("unsupport task {:?}", ty))); } - let Some(l1_el) = &self.l1_el else { - return Err(self.err(14011, "missing config for scroll_chain")); + let task_data = match task_data { + Some(task_data) => task_data, + None => { + let Some(l1_el) = &self.l1_el else { + return Err(self.err(14011, "missing config for scroll_chain")); + }; + + let tx = l1_el.get_transaction(tx_hash).await.unwrap(); + tx.input + }, }; + let task_data: Bytes = task_data[4..].to_owned().into(); - let tx = l1_el.get_transaction(tx_hash).await.unwrap(); - let batch_task = BatchTask::from_calldata(&tx.input[4..]).unwrap(); + let batch_task = BatchTask::from_calldata(&task_data).unwrap(); if sampling > 0 { if batch_task.id() % sampling != 0 { return Err(self.err(14444, "ratelimited, skip this, try next time")); @@ -267,7 +276,7 @@ impl ProverApi { let poe = self .prove_task(ProveTaskParams { - batch: Some(Bytes::from(tx.input[4..].to_vec())), + batch: Some(task_data), pob_hash: pob_list.hash, start: None, end: None, diff --git a/crates/prover/src/types.rs b/crates/prover/src/types.rs index 145e3b9..f0cf8ea 100644 --- a/crates/prover/src/types.rs +++ b/crates/prover/src/types.rs @@ -89,7 +89,7 @@ pub trait ProverV2Api { async fn prove_task(&self, arg: ProveTaskParams) -> RpcResult; #[method(name = "proveTaskWithoutContext")] - async fn prove_task_without_context(&self, tx_hash: B256, ty: u64) -> RpcResult; + async fn prove_task_without_context(&self, task_data: Bytes, ty: u64) -> RpcResult; #[method(name = "genContext")] async fn generate_context( diff --git a/testdata/test_scroll.sh b/testdata/test_scroll.sh new file mode 100755 index 0000000..1aab008 --- /dev/null +++ b/testdata/test_scroll.sh @@ -0,0 +1 @@ +curl localhost:18232 -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0", "id": 1, "method":"prover_proveTaskWithoutContext", "params": ["0x86b053a9000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000002840000000000000000000000000000000000000000000000000000000000000286000000000000000000000000000000000000000000000000000000000000000c104000000000004fc8f000000000000000200000000000e593ec0e25302e81784871f962613443c8910d368fa9ae71c15957d5fe79987fd72b00132305b8ecc27034e97532901418e7858548b522b167e3529afe4200e673a39ca349c3cfe1fa672003f9ecdb5c02dde6a121971904b545eda513bf0d6eebd4e0000000066ff56274221e131fb99346f635c7dcb58d4aad080877306856f5e1b68c1354f4fa0d67522a86636776f7e1632ae3a4ce8f8acabaa24c2a3ec2391ad751c388986977b6300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002800000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000620000000000000000000000000000000000000000000000000000000000000074000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000008c000000000000000000000000000000000000000000000000000000000000009e00000000000000000000000000000000000000000000000000000000000000b400000000000000000000000000000000000000000000000000000000000000c600000000000000000000000000000000000000000000000000000000000000d800000000000000000000000000000000000000000000000000000000000000ea00000000000000000000000000000000000000000000000000000000000000f8000000000000000000000000000000000000000000000000000000000000010600000000000000000000000000000000000000000000000000000000000001180000000000000000000000000000000000000000000000000000000000000126000000000000000000000000000000000000000000000000000000000000012c0000000000000000000000000000000000000000000000000000000000000136000000000000000000000000000000000000000000000000000000000000014c00000000000000000000000000000000000000000000000000000000000001560000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000016a0000000000000000000000000000000000000000000000000000000000000174000000000000000000000000000000000000000000000000000000000000018a000000000000000000000000000000000000000000000000000000000000019800000000000000000000000000000000000000000000000000000000000001aa00000000000000000000000000000000000000000000000000000000000001b400000000000000000000000000000000000000000000000000000000000001c200000000000000000000000000000000000000000000000000000000000001cc00000000000000000000000000000000000000000000000000000000000001d600000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000001ea000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002060000000000000000000000000000000000000000000000000000000000000214000000000000000000000000000000000000000000000000000000000000021e000000000000000000000000000000000000000000000000000000000000022c000000000000000000000000000000000000000000000000000000000000023a0000000000000000000000000000000000000000000000000000000000000244000000000000000000000000000000000000000000000000000000000000024e00000000000000000000000000000000000000000000000000000000000002580000000000000000000000000000000000000000000000000000000000000262000000000000000000000000000000000000000000000000000000000000000f1040000000000964e2e0000000066ff562a0000000000000000000000000000000000000000000000000000000002615f870000000000989680000900000000000000964e2f0000000066ff562d0000000000000000000000000000000000000000000000000000000002615f870000000000989680000700000000000000964e300000000066ff56300000000000000000000000000000000000000000000000000000000002615f870000000000989680000200000000000000964e310000000066ff56330000000000000000000000000000000000000000000000000000000002615f8700000000009896800009000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1040000000000964e320000000066ff56360000000000000000000000000000000000000000000000000000000002615f870000000000989680000b00000000000000964e330000000066ff56390000000000000000000000000000000000000000000000000000000002615f870000000000989680000900000000000000964e340000000066ff563c0000000000000000000000000000000000000000000000000000000002615f870000000000989680000a00000000000000964e350000000066ff563f0000000000000000000000000000000000000000000000000000000002615f870000000000989680000b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000079020000000000964e360000000066ff56420000000000000000000000000000000000000000000000000000000002615f870000000000989680000700000000000000964e370000000066ff56450000000000000000000000000000000000000000000000000000000002615f870000000000989680000500000000000000000000000000000000000000000000000000000000000000000000000000000000b5030000000000964e380000000066ff56480000000000000000000000000000000000000000000000000000000002615f870000000000989680000a00000000000000964e390000000066ff564b000000000000000000000000000000000000000000000000000000000260cc130000000000989680000800000000000000964e3a0000000066ff564e000000000000000000000000000000000000000000000000000000000260cc13000000000098968000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1040000000000964e3b0000000066ff5651000000000000000000000000000000000000000000000000000000000260cc130000000000989680000400000000000000964e3c0000000066ff5654000000000000000000000000000000000000000000000000000000000260cc130000000000989680000700000000000000964e3d0000000066ff5657000000000000000000000000000000000000000000000000000000000260cc130000000000989680000200000000000000964e3e0000000066ff565a000000000000000000000000000000000000000000000000000000000260cc13000000000098968000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012d050000000000964e3f0000000066ff565d000000000000000000000000000000000000000000000000000000000260cc130000000000989680000d00000000000000964e400000000066ff5660000000000000000000000000000000000000000000000000000000000260cc130000000000989680000300000000000000964e410000000066ff5663000000000000000000000000000000000000000000000000000000000260cc130000000000989680000500000000000000964e420000000066ff5666000000000000000000000000000000000000000000000000000000000260cc130000000000989680000500000000000000964e430000000066ff5669000000000000000000000000000000000000000000000000000000000260cc130000000000989680000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1040000000000964e440000000066ff566c000000000000000000000000000000000000000000000000000000000260cc130000000000989680000400000000000000964e450000000066ff566f000000000000000000000000000000000000000000000000000000000260cc130000000000989680000500000000000000964e460000000066ff5672000000000000000000000000000000000000000000000000000000000260cc130000000000989680000700000000000000964e470000000066ff5675000000000000000000000000000000000000000000000000000000000260cc1300000000009896800008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1040000000000964e480000000066ff5678000000000000000000000000000000000000000000000000000000000260cc130000000000989680000900000000000000964e490000000066ff567b000000000000000000000000000000000000000000000000000000000260cc130000000000989680000600000000000000964e4a0000000066ff567e000000000000000000000000000000000000000000000000000000000260cc130000000000989680000900000000000000964e4b0000000066ff5681000000000000000000000000000000000000000000000000000000000260cc1300000000009896800004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1040000000000964e4c0000000066ff5684000000000000000000000000000000000000000000000000000000000260cc130000000000989680000300000000000000964e4d0000000066ff5687000000000000000000000000000000000000000000000000000000000261df850000000000989680000800000000000000964e4e0000000066ff568a000000000000000000000000000000000000000000000000000000000261df850000000000989680000700000000000000964e4f0000000066ff568d000000000000000000000000000000000000000000000000000000000261df8500000000009896800005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b5030000000000964e500000000066ff5690000000000000000000000000000000000000000000000000000000000261df850000000000989680000d00000000000000964e510000000066ff5693000000000000000000000000000000000000000000000000000000000261df850000000000989680000400000000000000964e520000000066ff5696000000000000000000000000000000000000000000000000000000000261df85000000000098968000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b5030000000000964e530000000066ff5699000000000000000000000000000000000000000000000000000000000261df850000000000989680000400000000000000964e540000000066ff569c000000000000000000000000000000000000000000000000000000000261df850000000000989680000900000000000000964e550000000066ff569f000000000000000000000000000000000000000000000000000000000261df85000000000098968000070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1040000000000964e560000000066ff56a2000000000000000000000000000000000000000000000000000000000261df850000000000989680000900000000000000964e570000000066ff56a5000000000000000000000000000000000000000000000000000000000261df850000000000989680000400000000000000964e580000000066ff56a8000000000000000000000000000000000000000000000000000000000261df850000000000989680000300000000000000964e590000000066ff56ab000000000000000000000000000000000000000000000000000000000261df8500000000009896800006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b5030000000000964e5a0000000066ff56ae000000000000000000000000000000000000000000000000000000000261df850000000000989680000200000000000000964e5b0000000066ff56b1000000000000000000000000000000000000000000000000000000000261df850000000000989680001300000000000000964e5c0000000066ff56b4000000000000000000000000000000000000000000000000000000000261df850000000000989680000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000003d010000000000964e5d0000000066ff56b7000000000000000000000000000000000000000000000000000000000261df850000000000989680000700000000000000000000000000000000000000000000000000000000000000000000000079020000000000964e5e0000000066ff56ba000000000000000000000000000000000000000000000000000000000261df850000000000989680000800000000000000964e5f0000000066ff56bd000000000000000000000000000000000000000000000000000000000261df850000000000989680000c000000000000000000000000000000000000000000000000000000000000000000000000000000012d050000000000964e600000000066ff56c0000000000000000000000000000000000000000000000000000000000261df850000000000989680000600000000000000964e610000000066ff56c3000000000000000000000000000000000000000000000000000000000261df850000000000989680000300000000000000964e620000000066ff56c6000000000000000000000000000000000000000000000000000000000261df850000000000989680000300000000000000964e630000000066ff56c9000000000000000000000000000000000000000000000000000000000261df850000000000989680000700000000000000964e640000000066ff56cc000000000000000000000000000000000000000000000000000000000261df850000000000989680000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000079020000000000964e650000000066ff56cf000000000000000000000000000000000000000000000000000000000261df850000000000989680000700000000000000964e660000000066ff56d2000000000000000000000000000000000000000000000000000000000261df85000000000098968000080000000000000000000000000000000000000000000000000000000000000000000000000000000079020000000000964e670000000066ff56d5000000000000000000000000000000000000000000000000000000000261df850000000000989680000400000000000000964e680000000066ff56d8000000000000000000000000000000000000000000000000000000000261df85000000000098968000090000000000000000000000000000000000000000000000000000000000000000000000000000000079020000000000964e690000000066ff56db000000000000000000000000000000000000000000000000000000000261df850000000000989680000a00000000000000964e6a0000000066ff56de000000000000000000000000000000000000000000000000000000000261df85000000000098968000050000000000000000000000000000000000000000000000000000000000000000000000000000000079020000000000964e6b0000000066ff56e1000000000000000000000000000000000000000000000000000000000261df850000000000989680001500000000000000964e6c0000000066ff56e4000000000000000000000000000000000000000000000000000000000261df8500000000009896800007000000000000000000000000000000000000000000000000000000000000000000000000000000012d050000000000964e6d0000000066ff56e7000000000000000000000000000000000000000000000000000000000261df850000000000989680000300000000000000964e6e0000000066ff56ea000000000000000000000000000000000000000000000000000000000260fc450000000000989680000600000000000000964e6f0000000066ff56ed000000000000000000000000000000000000000000000000000000000260fc450000000000989680000100000000000000964e700000000066ff56f0000000000000000000000000000000000000000000000000000000000260fc450000000000989680000c00000000000000964e710000000066ff56f3000000000000000000000000000000000000000000000000000000000260fc450000000000989680000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b5030000000000964e720000000066ff56f6000000000000000000000000000000000000000000000000000000000260fc450000000000989680000a00000000000000964e730000000066ff56f9000000000000000000000000000000000000000000000000000000000260fc450000000000989680000700000000000000964e740000000066ff56fc000000000000000000000000000000000000000000000000000000000260fc45000000000098968000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1040000000000964e750000000066ff56ff000000000000000000000000000000000000000000000000000000000261dcdb0000000000989680000800000000000000964e760000000066ff5702000000000000000000000000000000000000000000000000000000000261dcdb0000000000989680000300000000000000964e770000000066ff5705000000000000000000000000000000000000000000000000000000000261dcdb0000000000989680000400000000000000964e780000000066ff5708000000000000000000000000000000000000000000000000000000000261dcdb0000000000989680000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000079020000000000964e790000000066ff570b000000000000000000000000000000000000000000000000000000000261dcdb0000000000989680000700000000000000964e7a0000000066ff570e000000000000000000000000000000000000000000000000000000000261dcdb0000000000989680000c00000000000000000000000000000000000000000000000000000000000000000000000000000000b5030000000000964e7b0000000066ff5711000000000000000000000000000000000000000000000000000000000261dcdb0000000000989680000700000000000000964e7c0000000066ff5714000000000000000000000000000000000000000000000000000000000261dcdb0000000000989680000100000000000000964e7d0000000066ff5717000000000000000000000000000000000000000000000000000000000261dcdb00000000009896800007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000079020000000000964e7e0000000066ff571a000000000000000000000000000000000000000000000000000000000261dcdb0000000000989680000900000000000000964e7f0000000066ff571d00000000000000000000000000000000000000000000000000000000026109f5000000000098968000040000000000000000000000000000000000000000000000000000000000000000000000000000000079020000000000964e800000000066ff572000000000000000000000000000000000000000000000000000000000026109f50000000000989680000c00000000000000964e810000000066ff572300000000000000000000000000000000000000000000000000000000026109f5000000000098968000060000000000000000000000000000000000000000000000000000000000000000000000000000000079020000000000964e820000000066ff572600000000000000000000000000000000000000000000000000000000026109f50000000000989680000900000000000000964e830000000066ff572900000000000000000000000000000000000000000000000000000000026109f5000000000098968000050000000000000000000000000000000000000000000000000000000000000000000000000000000079020000000000964e840000000066ff572c00000000000000000000000000000000000000000000000000000000026109f50000000000989680000700000000000000964e850000000066ff572f00000000000000000000000000000000000000000000000000000000026109f500000000009896800007000000000000000000000000000000000000000000000000000000000000000000000000000000012d050000000000964e860000000066ff573200000000000000000000000000000000000000000000000000000000026109f50000000000989680000400000000000000964e870000000066ff573500000000000000000000000000000000000000000000000000000000026109f50000000000989680000700000000000000964e880000000066ff573800000000000000000000000000000000000000000000000000000000026109f50000000000989680000200000000000000964e890000000066ff573b00000000000000000000000000000000000000000000000000000000026109f50000000000989680000400000000000000964e8a0000000066ff573e00000000000000000000000000000000000000000000000000000000026109f500000000009896800003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003d010000000000964e8b0000000066ff574100000000000000000000000000000000000000000000000000000000026109f50000000000989680000b000000000000000000000000000000000000000000000000000000000000000000000000b5030000000000964e8c0000000066ff574400000000000000000000000000000000000000000000000000000000026109f50000000000989680000800000000000000964e8d0000000066ff574700000000000000000000000000000000000000000000000000000000026109f50000000000989680000700000000000000964e8e0000000066ff574a00000000000000000000000000000000000000000000000000000000026109f500000000009896800004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000079020000000000964e8f0000000066ff574d00000000000000000000000000000000000000000000000000000000026109f50000000000989680000700000000000000964e900000000066ff575000000000000000000000000000000000000000000000000000000000026109f50000000000989680000500000000000000000000000000000000000000000000000000000000000000000000000000000000b5030000000000964e910000000066ff575300000000000000000000000000000000000000000000000000000000026109f50000000000989680000800000000000000964e920000000066ff575600000000000000000000000000000000000000000000000000000000026109f50000000000989680000600000000000000964e930000000066ff575900000000000000000000000000000000000000000000000000000000026109f5000000000098968000090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b5030000000000964e940000000066ff575c00000000000000000000000000000000000000000000000000000000026109f50000000000989680000900000000000000964e950000000066ff575f00000000000000000000000000000000000000000000000000000000026109f50000000000989680000200000000000000964e960000000066ff576200000000000000000000000000000000000000000000000000000000026109f500000000009896800005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000079020000000000964e970000000066ff576500000000000000000000000000000000000000000000000000000000026109f50000000000989680000800000000000000964e980000000066ff576800000000000000000000000000000000000000000000000000000000026109f5000000000098968000040000000000000000000000000000000000000000000000000000000000000000000000000000000079020000000000964e990000000066ff576b00000000000000000000000000000000000000000000000000000000026109f50000000000989680000700000000000000964e9a0000000066ff576e00000000000000000000000000000000000000000000000000000000026109f5000000000098968000060000000000000000000000000000000000000000000000000000000000000000000000000000000079020000000000964e9b0000000066ff577100000000000000000000000000000000000000000000000000000000026109f50000000000989680000a00000000000000964e9c0000000066ff577400000000000000000000000000000000000000000000000000000000026109f5000000000098968000060000000000000000000000000000000000000000000000000000000000000000000000000000000079020000000000964e9d0000000066ff577700000000000000000000000000000000000000000000000000000000026198980000000000989680000600000000000000964e9e0000000066ff577a000000000000000000000000000000000000000000000000000000000261989800000000009896800005000000000000000000000000000000000000000000000000000000000000000000000000000000003d010000000000964e9f0000000066ff577d00000000000000000000000000000000000000000000000000000000026198980000000000989680000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a02f96adc61413bf643008eec101ff66a33a503af82bba5be5ec055a9dd7db646f6bfd53c21e2dd1383edb1a4352a5e068cc6927537986f3d73ce3971c4f4564b4b96c28dc66473da059e3ee1cec1355d60c3f307b2c298fda72d75cfecf774027b7c80491ec32b884a70a503bd67c965f99d30b04805b5df2376e10ae6b21cb3487f78b3fc4da6deb8ded88222f706827a6a175f5ae64a517ae2fb54bebb7954d", 1]}' \ No newline at end of file